Postgres State Store: Add Support for First-Write concurrency
Signed-off-by: Bernd Verst <4535280+berndverst@users.noreply.github.com>
This commit is contained in:
parent
973ff8f94c
commit
3af0953516
|
@ -143,7 +143,11 @@ func (p *postgresDBAccess) setValue(req *state.SetRequest) error {
|
||||||
|
|
||||||
// Sprintf is required for table name because sql.DB does not substitute parameters for table names.
|
// Sprintf is required for table name because sql.DB does not substitute parameters for table names.
|
||||||
// Other parameters use sql.DB parameter substitution.
|
// Other parameters use sql.DB parameter substitution.
|
||||||
if req.ETag == nil {
|
if req.Options.Concurrency == state.FirstWrite && (req.ETag == nil || *req.ETag == "") {
|
||||||
|
result, err = p.db.Exec(fmt.Sprintf(
|
||||||
|
`INSERT INTO %s (key, value, isbinary) VALUES ($1, $2, $3);`,
|
||||||
|
defaultTableName), req.Key, value, isBinary)
|
||||||
|
} else if req.ETag == nil {
|
||||||
result, err = p.db.Exec(fmt.Sprintf(
|
result, err = p.db.Exec(fmt.Sprintf(
|
||||||
`INSERT INTO %s (key, value, isbinary) VALUES ($1, $2, $3)
|
`INSERT INTO %s (key, value, isbinary) VALUES ($1, $2, $3)
|
||||||
ON CONFLICT (key) DO UPDATE SET value = $2, isbinary = $3, updatedate = NOW();`,
|
ON CONFLICT (key) DO UPDATE SET value = $2, isbinary = $3, updatedate = NOW();`,
|
||||||
|
|
|
@ -21,7 +21,7 @@ components:
|
||||||
operations: [ "set", "get", "delete", "bulkset", "bulkdelete", "transaction", "etag", "first-write" ]
|
operations: [ "set", "get", "delete", "bulkset", "bulkdelete", "transaction", "etag", "first-write" ]
|
||||||
- component: postgresql
|
- component: postgresql
|
||||||
allOperations: false
|
allOperations: false
|
||||||
operations: [ "set", "get", "delete", "bulkset", "bulkdelete", "transaction", "etag", "query" ]
|
operations: [ "set", "get", "delete", "bulkset", "bulkdelete", "transaction", "etag", "query", "first-write" ]
|
||||||
- component: mysql.mysql
|
- component: mysql.mysql
|
||||||
allOperations: false
|
allOperations: false
|
||||||
operations: [ "set", "get", "delete", "bulkset", "bulkdelete", "transaction", "etag", "first-write" ]
|
operations: [ "set", "get", "delete", "bulkset", "bulkdelete", "transaction", "etag", "first-write" ]
|
||||||
|
|
Loading…
Reference in New Issue