UniStore: Use epoch with microsecond resolution as RV (#92638)

* Use epoch with microsecond resolution as RV

* fix backend tests

* Add solution for when the clock goes back

* Add solution for when the clock goes back

* generate mocks

* go lint

* remove comment

* Use Greatest instead of max in msyql and postgres

* update tests

* Update pkg/storage/unified/sql/sqltemplate/dialect_sqlite.go

Co-authored-by: Diego Augusto Molina <diegoaugustomolina@gmail.com>

* cast to bigint

* add additional round trip

* increment the RV using 2 sql round trips instead of 3

* cleanup comments

* cast unix timestamp to integer

* fix postgres query

* remove old increment test data

* remove greatest

* cast unix_timestamp to signed

* Use statement_timestamp instead of clock_timestamp

---------

Co-authored-by: Diego Augusto Molina <diegoaugustomolina@gmail.com>
This commit is contained in:
Georges Chaudy
2024-10-11 11:11:33 +02:00
committed by GitHub
parent 0bd3ad1d5a
commit d999b415df
35 changed files with 391 additions and 225 deletions
@@ -11,10 +11,10 @@ INSERT INTO `resource_history`
)
VALUES (
'',
'',
'',
'',
'',
'gg',
'rr',
'nn',
'name',
1234,
'[]',
'UNKNOWN'
@@ -3,8 +3,8 @@ SELECT
`value`
FROM `resource`
WHERE 1 = 1
AND `namespace` = ''
AND `group` = ''
AND `resource` = ''
AND `name` = ''
AND `namespace` = 'nn'
AND `group` = 'gg'
AND `resource` = 'rr'
AND `name` = 'name'
;
@@ -4,8 +4,8 @@ UPDATE `resource`
`value` = '[]',
`action` = 'UNKNOWN'
WHERE 1 = 1
AND `group` = ''
AND `resource` = ''
AND `namespace` = ''
AND `name` = ''
AND `group` = 'gg'
AND `resource` = 'rr'
AND `namespace` = 'nn'
AND `name` = 'name'
;
@@ -1,8 +1,9 @@
SELECT
`resource_version`
`resource_version`,
CAST(FLOOR(UNIX_TIMESTAMP(NOW(6)) * 1000000) AS SIGNED)
FROM `resource_version`
WHERE 1 = 1
AND `group` = ''
AND `resource` = ''
AND `group` = 'group'
AND `resource` = 'resource'
FOR UPDATE
;
@@ -1,7 +0,0 @@
UPDATE `resource_version`
SET
`resource_version` = 123
WHERE 1 = 1
AND `group` = ''
AND `resource` = ''
;
@@ -7,6 +7,6 @@ INSERT INTO `resource_version`
VALUES (
'',
'',
2
CAST(FLOOR(UNIX_TIMESTAMP(NOW(6)) * 1000000) AS SIGNED)
)
;
@@ -0,0 +1,7 @@
UPDATE `resource_version`
SET
`resource_version` = 12354
WHERE 1 = 1
AND `group` = 'group'
AND `resource` = 'resource'
;
@@ -11,10 +11,10 @@ INSERT INTO "resource_history"
)
VALUES (
'',
'',
'',
'',
'',
'gg',
'rr',
'nn',
'name',
1234,
'[]',
'UNKNOWN'
@@ -3,8 +3,8 @@ SELECT
"value"
FROM "resource"
WHERE 1 = 1
AND "namespace" = ''
AND "group" = ''
AND "resource" = ''
AND "name" = ''
AND "namespace" = 'nn'
AND "group" = 'gg'
AND "resource" = 'rr'
AND "name" = 'name'
;
@@ -4,8 +4,8 @@ UPDATE "resource"
"value" = '[]',
"action" = 'UNKNOWN'
WHERE 1 = 1
AND "group" = ''
AND "resource" = ''
AND "namespace" = ''
AND "name" = ''
AND "group" = 'gg'
AND "resource" = 'rr'
AND "namespace" = 'nn'
AND "name" = 'name'
;
@@ -1,8 +1,9 @@
SELECT
"resource_version"
"resource_version",
(EXTRACT(EPOCH FROM statement_timestamp()) * 1000000)::BIGINT
FROM "resource_version"
WHERE 1 = 1
AND "group" = ''
AND "resource" = ''
AND "group" = 'group'
AND "resource" = 'resource'
FOR UPDATE
;
@@ -1,7 +0,0 @@
UPDATE "resource_version"
SET
"resource_version" = 123
WHERE 1 = 1
AND "group" = ''
AND "resource" = ''
;
@@ -7,6 +7,6 @@ INSERT INTO "resource_version"
VALUES (
'',
'',
2
(EXTRACT(EPOCH FROM statement_timestamp()) * 1000000)::BIGINT
)
;
@@ -0,0 +1,7 @@
UPDATE "resource_version"
SET
"resource_version" = 12354
WHERE 1 = 1
AND "group" = 'group'
AND "resource" = 'resource'
;
@@ -11,10 +11,10 @@ INSERT INTO "resource_history"
)
VALUES (
'',
'',
'',
'',
'',
'gg',
'rr',
'nn',
'name',
1234,
'[]',
'UNKNOWN'
@@ -3,8 +3,8 @@ SELECT
"value"
FROM "resource"
WHERE 1 = 1
AND "namespace" = ''
AND "group" = ''
AND "resource" = ''
AND "name" = ''
AND "namespace" = 'nn'
AND "group" = 'gg'
AND "resource" = 'rr'
AND "name" = 'name'
;
@@ -4,8 +4,8 @@ UPDATE "resource"
"value" = '[]',
"action" = 'UNKNOWN'
WHERE 1 = 1
AND "group" = ''
AND "resource" = ''
AND "namespace" = ''
AND "name" = ''
AND "group" = 'gg'
AND "resource" = 'rr'
AND "namespace" = 'nn'
AND "name" = 'name'
;
@@ -1,7 +1,8 @@
SELECT
"resource_version"
"resource_version",
CAST((julianday('now') - 2440587.5) * 86400000000.0 AS BIGINT)
FROM "resource_version"
WHERE 1 = 1
AND "group" = ''
AND "resource" = ''
AND "group" = 'group'
AND "resource" = 'resource'
;
@@ -1,7 +0,0 @@
UPDATE "resource_version"
SET
"resource_version" = 123
WHERE 1 = 1
AND "group" = ''
AND "resource" = ''
;
@@ -7,6 +7,6 @@ INSERT INTO "resource_version"
VALUES (
'',
'',
2
CAST((julianday('now') - 2440587.5) * 86400000000.0 AS BIGINT)
)
;
@@ -0,0 +1,7 @@
UPDATE "resource_version"
SET
"resource_version" = 12354
WHERE 1 = 1
AND "group" = 'group'
AND "resource" = 'resource'
;