Skip to content

Commit 3744ace

Browse files
committed
backupccl: make SHOW BACKUP timestamps timestampTZ
Release note (sql change): SHOW BACKUP's timestamp columns are now TIMESTAMPTZ, meaning they render in the session offset. Epic: CRDB-24406.
1 parent 3e7991d commit 3744ace

File tree

3 files changed

+33
-11
lines changed

3 files changed

+33
-11
lines changed

pkg/ccl/backupccl/show.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -732,8 +732,8 @@ func backupShowerHeaders(showSchemas bool, opts tree.ShowBackupOptions) colinfo.
732732
{Name: "object_name", Typ: types.String},
733733
{Name: "object_type", Typ: types.String},
734734
{Name: "backup_type", Typ: types.String},
735-
{Name: "start_time", Typ: types.Timestamp},
736-
{Name: "end_time", Typ: types.Timestamp},
735+
{Name: "start_time", Typ: types.TimestampTZ},
736+
{Name: "end_time", Typ: types.TimestampTZ},
737737
{Name: "size_bytes", Typ: types.Int},
738738
{Name: "rows", Typ: types.Int},
739739
{Name: "is_full_cluster", Typ: types.Bool},
@@ -844,12 +844,12 @@ func backupShowerDefault(
844844
backupType = tree.NewDString("incremental")
845845
}
846846
start := tree.DNull
847-
end, err := tree.MakeDTimestamp(timeutil.Unix(0, manifest.EndTime.WallTime), time.Nanosecond)
847+
end, err := tree.MakeDTimestampTZ(timeutil.Unix(0, manifest.EndTime.WallTime), time.Nanosecond)
848848
if err != nil {
849849
return nil, err
850850
}
851851
if manifest.StartTime.WallTime != 0 {
852-
start, err = tree.MakeDTimestamp(timeutil.Unix(0, manifest.StartTime.WallTime), time.Nanosecond)
852+
start, err = tree.MakeDTimestampTZ(timeutil.Unix(0, manifest.StartTime.WallTime), time.Nanosecond)
853853
if err != nil {
854854
return nil, err
855855
}

pkg/ccl/backupccl/show_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ CREATE TABLE data.sc.t2 (a data.welcome);
6262

6363
const full, inc, inc2 = localFoo + "/full", localFoo + "/inc", localFoo + "/inc2"
6464

65-
beforeTS := sqlDB.QueryStr(t, `SELECT now()::timestamp::string`)[0][0]
65+
beforeTS := sqlDB.QueryStr(t, `SELECT now()::timestamptz::string`)[0][0]
6666
sqlDB.Exec(t, fmt.Sprintf(`BACKUP DATABASE data TO $1 AS OF SYSTEM TIME '%s'`, beforeTS), full)
6767

6868
res := sqlDB.QueryStr(t, `
@@ -93,7 +93,7 @@ ORDER BY object_type, object_name`, full)
9393

9494
// Backup the changes by appending to the base and by making a separate
9595
// inc backup.
96-
incTS := sqlDB.QueryStr(t, `SELECT now()::timestamp::string`)[0][0]
96+
incTS := sqlDB.QueryStr(t, `SELECT now()::timestamptz::string`)[0][0]
9797
sqlDB.Exec(t, fmt.Sprintf(`BACKUP DATABASE data TO $1 AS OF SYSTEM TIME '%s'`, incTS), full)
9898
sqlDB.Exec(t, fmt.Sprintf(`BACKUP DATABASE data TO $1 AS OF SYSTEM TIME '%s' INCREMENTAL FROM $2`, incTS), inc, full)
9999

@@ -124,9 +124,9 @@ ORDER BY object_type, object_name`, full)
124124
// Truncate decimal places so Go's very rigid parsing will work.
125125
// TODO(bardin): Consider using a third-party library for this, or some kind
126126
// of time-freezing on the test cluster.
127-
truncateBackupTimeRE := regexp.MustCompile(`^(.*\.[0-9]{2})[0-9]*$`)
127+
truncateBackupTimeRE := regexp.MustCompile(`^(.*\.[0-9]{2})[0-9]*\+00$`)
128128
matchResult := truncateBackupTimeRE.FindStringSubmatch(beforeTS)
129-
require.NotNil(t, matchResult)
129+
require.NotNil(t, matchResult, "%s does not match %s", beforeTS, truncateBackupTimeRE)
130130
backupTime, err := time.Parse("2006-01-02 15:04:05.00", matchResult[1])
131131
require.NoError(t, err)
132132
backupFolder := backupTime.Format(backupbase.DateBasedIntoFolderName)
@@ -168,7 +168,7 @@ ORDER BY object_type, object_name`, full)
168168

169169
// Backup the changes again, by appending to the base and by making a
170170
// separate inc backup.
171-
inc2TS := sqlDB.QueryStr(t, `SELECT now()::timestamp::string`)[0][0]
171+
inc2TS := sqlDB.QueryStr(t, `SELECT now()::timestamptz::string`)[0][0]
172172
sqlDB.Exec(t, fmt.Sprintf(`BACKUP DATABASE data TO $1 AS OF SYSTEM TIME '%s'`, inc2TS), full)
173173
sqlDB.Exec(t, fmt.Sprintf(`BACKUP DATABASE data TO $1 AS OF SYSTEM TIME '%s' INCREMENTAL FROM $2, $3`, inc2TS), inc2, full, inc)
174174

@@ -633,7 +633,7 @@ func TestShowBackupTenants(t *testing.T) {
633633
defer conn10.Close()
634634
tenant10 := sqlutils.MakeSQLRunner(conn10)
635635
tenant10.Exec(t, `CREATE DATABASE foo; CREATE TABLE foo.bar(i int primary key); INSERT INTO foo.bar VALUES (110), (210)`)
636-
beforeTS := systemDB.QueryStr(t, `SELECT now()::timestamp::string`)[0][0]
636+
beforeTS := systemDB.QueryStr(t, `SELECT now()::timestamptz::string`)[0][0]
637637

638638
systemDB.Exec(t, fmt.Sprintf(`BACKUP TENANT 10 TO 'nodelocal://1/t10' AS OF SYSTEM TIME '%s'`, beforeTS))
639639

@@ -726,7 +726,7 @@ func TestShowBackupWithDebugIDs(t *testing.T) {
726726

727727
const full = localFoo + "/full"
728728

729-
beforeTS := sqlDB.QueryStr(t, `SELECT now()::timestamp::string`)[0][0]
729+
beforeTS := sqlDB.QueryStr(t, `SELECT now()::timestamptz::string`)[0][0]
730730
sqlDB.Exec(t, fmt.Sprintf(`BACKUP DATABASE data TO $1 AS OF SYSTEM TIME '%s'`, beforeTS), full)
731731

732732
// extract the object IDs for the database and public schema

pkg/ccl/backupccl/testdata/backup-restore/show_backup

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,28 @@ SELECT sum(size_bytes) FROM [SHOW BACKUP 'valid-22.2' IN 'nodelocal://1/' WITH s
2626
----
2727
0
2828

29+
query-sql
30+
SET TIME ZONE 'UTC';
31+
----
32+
33+
query-sql
34+
SELECT end_time, end_time AT TIME ZONE 'MST' FROM [SHOW BACKUP 'valid-22.2' IN 'nodelocal://1/' WITH skip size] limit 1;
35+
----
36+
2022-08-03 16:00:28.984252 +0000 UTC 2022-08-03 09:00:28.984252 +0000 +0000
37+
38+
query-sql
39+
SET TIME ZONE 'MST';
40+
----
41+
42+
query-sql
43+
SELECT end_time, end_time AT TIME ZONE 'MST' FROM [SHOW BACKUP 'valid-22.2' IN 'nodelocal://1/' WITH skip size] limit 1;
44+
----
45+
2022-08-03 09:00:28.984252 -0700 MST 2022-08-03 09:00:28.984252 +0000 +0000
46+
47+
query-sql
48+
SET TIME ZONE 'UTC';
49+
----
50+
2951
# This backup is completely valid, but has no jobs.
3052
query-sql regex=No\sproblems\sfound!
3153
SELECT * FROM [SHOW BACKUP VALIDATE FROM 'valid-22.2' IN 'nodelocal://1/'];

0 commit comments

Comments
 (0)