From 45288c7b58ae5a5b0da3820cd7a386096018b3c7 Mon Sep 17 00:00:00 2001 From: Aditya Maru Date: Mon, 21 Mar 2022 16:48:33 +0530 Subject: [PATCH] backupccl: add deprecation notice to `RESTORE FROM` without subdir Informs: #78153 Release note (sql change): The `RESTORE FROM` syntax without an explicit subdirectory pointing to a backup in a collection is deprecated, and will be removed in a future release. Users are recommended to use `RESTORE FROM IN ` to restore a particular backup in a collection. --- pkg/ccl/backupccl/restore_planning.go | 7 +++++++ .../testdata/backup-restore/column-families | 2 +- .../testdata/backup-restore/feature-flags | 4 ++-- .../testdata/backup-restore/max-row-size | 2 +- .../testdata/backup-restore/multiregion | 16 ++++++++-------- .../testdata/backup-restore/restore-grants | 10 +++++----- .../testdata/backup-restore/restore-permissions | 14 +++++++------- .../testdata/backup-restore/row_level_ttl | 6 +++--- .../testdata/backup-restore/temp-tables | 6 +++--- .../testdata/backup-restore/user-defined-types | 6 +++--- .../testdata/backup-restore/virtual-columns | 2 +- 11 files changed, 41 insertions(+), 34 deletions(-) diff --git a/pkg/ccl/backupccl/restore_planning.go b/pkg/ccl/backupccl/restore_planning.go index f091d2f90434..f085cc2d9b20 100644 --- a/pkg/ccl/backupccl/restore_planning.go +++ b/pkg/ccl/backupccl/restore_planning.go @@ -1075,6 +1075,13 @@ func restorePlanHook( if err != nil { return nil, nil, nil, false, err } + } else { + // Deprecation notice for non-colelction `RESTORE FROM` syntax. Remove this + // once the syntax is deleted in 22.2. + p.BufferClientNotice(ctx, + pgnotice.Newf("Note the `RESTORE FROM ` syntax will be removed in a future release, please"+ + "switch over to using `RESTORE FROM IN ` to restore a particular backup from a collection: %s", + "https://www.cockroachlabs.com/docs/stable/restore.html#view-the-backup-subdirectories")) } var incStorageFn func() ([]string, error) diff --git a/pkg/ccl/backupccl/testdata/backup-restore/column-families b/pkg/ccl/backupccl/testdata/backup-restore/column-families index cdd90a316ba8..60946be7936b 100644 --- a/pkg/ccl/backupccl/testdata/backup-restore/column-families +++ b/pkg/ccl/backupccl/testdata/backup-restore/column-families @@ -37,7 +37,7 @@ CREATE DATABASE r1; ---- exec-sql -RESTORE cfs FROM 'nodelocal://1/foo' WITH into_db='r1'; +RESTORE cfs FROM LATEST IN 'nodelocal://1/foo' WITH into_db='r1'; ---- query-sql diff --git a/pkg/ccl/backupccl/testdata/backup-restore/feature-flags b/pkg/ccl/backupccl/testdata/backup-restore/feature-flags index 8d2233aadf2d..210675465e44 100644 --- a/pkg/ccl/backupccl/testdata/backup-restore/feature-flags +++ b/pkg/ccl/backupccl/testdata/backup-restore/feature-flags @@ -36,7 +36,7 @@ SET CLUSTER SETTING feature.restore.enabled = FALSE; ---- exec-sql -RESTORE TABLE d.t FROM 'nodelocal://0/test-root/'; +RESTORE TABLE d.t FROM LATEST IN 'nodelocal://0/test-root/'; ---- pq: feature RESTORE was disabled by the database administrator @@ -46,5 +46,5 @@ SET CLUSTER SETTING feature.restore.enabled = TRUE; ---- exec-sql -RESTORE TABLE d.t FROM 'nodelocal://0/test-root/'; +RESTORE TABLE d.t FROM LATEST IN 'nodelocal://0/test-root/'; ---- diff --git a/pkg/ccl/backupccl/testdata/backup-restore/max-row-size b/pkg/ccl/backupccl/testdata/backup-restore/max-row-size index f8be2751b363..b29110092c8c 100644 --- a/pkg/ccl/backupccl/testdata/backup-restore/max-row-size +++ b/pkg/ccl/backupccl/testdata/backup-restore/max-row-size @@ -31,7 +31,7 @@ CREATE DATABASE d2; ---- exec-sql -RESTORE maxrow FROM 'nodelocal://1/maxrow' WITH into_db='d2'; +RESTORE maxrow FROM LATEST IN 'nodelocal://1/maxrow' WITH into_db='d2'; ---- query-sql diff --git a/pkg/ccl/backupccl/testdata/backup-restore/multiregion b/pkg/ccl/backupccl/testdata/backup-restore/multiregion index 6a63f5ea44e9..8b248b79f3d4 100644 --- a/pkg/ccl/backupccl/testdata/backup-restore/multiregion +++ b/pkg/ccl/backupccl/testdata/backup-restore/multiregion @@ -27,7 +27,7 @@ new-server name=s2 share-io-dir=s1 allow-implicit-access localities=us-east-1,us ---- exec-sql -RESTORE FROM 'nodelocal://0/full_cluster_backup/'; +RESTORE FROM LATEST IN 'nodelocal://0/full_cluster_backup/'; ---- exec-sql @@ -35,7 +35,7 @@ DROP DATABASE d; ---- exec-sql -RESTORE DATABASE d FROM 'nodelocal://0/database_backup/'; +RESTORE DATABASE d FROM LATEST IN 'nodelocal://0/database_backup/'; ---- query-sql @@ -52,13 +52,13 @@ new-server name=s3 share-io-dir=s1 allow-implicit-access localities=eu-central-1 ---- exec-sql -RESTORE DATABASE d FROM 'nodelocal://0/database_backup/'; +RESTORE DATABASE d FROM LATEST IN 'nodelocal://0/database_backup/'; ---- pq: detected a mismatch in regions between the restore cluster and the backup cluster, missing regions detected: us-east-1, us-west-1. HINT: there are two ways you can resolve this issue: 1) update the cluster to which you're restoring to ensure that the regions present on the nodes' --locality flags match those present in the backup image, or 2) restore with the "skip_localities_check" option exec-sql -RESTORE FROM 'nodelocal://0/full_cluster_backup/'; +RESTORE FROM LATEST IN 'nodelocal://0/full_cluster_backup/'; ---- pq: detected a mismatch in regions between the restore cluster and the backup cluster, missing regions detected: us-east-1, us-west-1. HINT: there are two ways you can resolve this issue: 1) update the cluster to which you're restoring to ensure that the regions present on the nodes' --locality flags match those present in the backup image, or 2) restore with the "skip_localities_check" option @@ -97,7 +97,7 @@ SET CLUSTER SETTING sql.defaults.primary_region = 'non-existent-region'; ---- exec-sql -RESTORE DATABASE no_region_db FROM 'nodelocal://1/no_region_database_backup/'; +RESTORE DATABASE no_region_db FROM LATEST IN 'nodelocal://1/no_region_database_backup/'; ---- pq: region "non-existent-region" does not exist HINT: valid regions: eu-central-1, eu-north-1 @@ -109,7 +109,7 @@ SET CLUSTER SETTING sql.defaults.primary_region = 'eu-central-1'; ---- exec-sql -RESTORE DATABASE no_region_db FROM 'nodelocal://1/no_region_database_backup/'; +RESTORE DATABASE no_region_db FROM LATEST IN 'nodelocal://1/no_region_database_backup/'; ---- NOTICE: setting the PRIMARY REGION as eu-central-1 on database no_region_db HINT: to change the default primary region, use SET CLUSTER SETTING sql.defaults.primary_region = 'region' or use RESET CLUSTER SETTING sql.defaults.primary_region to disable this behavior @@ -148,7 +148,7 @@ SET CLUSTER SETTING sql.defaults.primary_region = 'eu-north-1'; ---- exec-sql -RESTORE FROM 'nodelocal://1/no_region_cluster_backup/'; +RESTORE FROM LATEST IN 'nodelocal://1/no_region_cluster_backup/'; ---- NOTICE: setting the PRIMARY REGION as eu-north-1 on database defaultdb HINT: to change the default primary region, use SET CLUSTER SETTING sql.defaults.primary_region = 'region' or use RESET CLUSTER SETTING sql.defaults.primary_region to disable this behavior @@ -176,7 +176,7 @@ public t table root REGIONAL BY TABLE IN PRIMARY REGION # Check we can restore without triggering the default primary region. exec-sql -RESTORE DATABASE eu_central_db FROM 'nodelocal://1/eu_central_database_backup/'; +RESTORE DATABASE eu_central_db FROM LATEST IN 'nodelocal://1/eu_central_database_backup/'; ---- query-sql diff --git a/pkg/ccl/backupccl/testdata/backup-restore/restore-grants b/pkg/ccl/backupccl/testdata/backup-restore/restore-grants index f2040fdca178..f59dbd38c4fa 100644 --- a/pkg/ccl/backupccl/testdata/backup-restore/restore-grants +++ b/pkg/ccl/backupccl/testdata/backup-restore/restore-grants @@ -148,7 +148,7 @@ GRANT CREATE ON DATABASE testuser_db TO testuser; ---- exec-sql user=testuser -RESTORE testdb.sc.othertable, testdb.testtable_greeting_usage FROM 'nodelocal://1/test' WITH into_db='testuser_db'; +RESTORE testdb.sc.othertable, testdb.testtable_greeting_usage FROM LATEST IN 'nodelocal://1/test' WITH into_db='testuser_db'; ---- # Check that user1 doesn't have any privs, but testuser should be the owner. @@ -211,7 +211,7 @@ GRANT CREATE ON DATABASE restoredb TO user1; ---- exec-sql -RESTORE testdb.sc.othertable, testdb.testtable_greeting_usage, testdb.testtable_greeting_owner FROM 'nodelocal://1/test' WITH into_db='restoredb'; +RESTORE testdb.sc.othertable, testdb.testtable_greeting_usage, testdb.testtable_greeting_owner FROM LATEST IN 'nodelocal://1/test' WITH into_db='restoredb'; ---- query-sql @@ -268,7 +268,7 @@ DROP DATABASE testdb CASCADE; ---- exec-sql -RESTORE DATABASE testdb FROM 'nodelocal://0/test/'; +RESTORE DATABASE testdb FROM LATEST IN 'nodelocal://0/test/'; ---- @@ -350,7 +350,7 @@ DROP DATABASE testdb CASCADE; # Now, let's restore a single database as a non-admin (testuser). exec-sql user=testuser -RESTORE DATABASE testdb FROM 'nodelocal://0/test/'; +RESTORE DATABASE testdb FROM LATEST IN 'nodelocal://0/test/'; ---- # Check that user1 doesn't have any privs. @@ -435,7 +435,7 @@ new-server name=s2 share-io-dir=s1 allow-implicit-access ---- exec-sql -RESTORE FROM 'nodelocal://0/test/'; +RESTORE FROM LATEST IN 'nodelocal://0/test/'; ---- # Check user1. diff --git a/pkg/ccl/backupccl/testdata/backup-restore/restore-permissions b/pkg/ccl/backupccl/testdata/backup-restore/restore-permissions index bedc9bfdd147..fb7849ef48ad 100644 --- a/pkg/ccl/backupccl/testdata/backup-restore/restore-permissions +++ b/pkg/ccl/backupccl/testdata/backup-restore/restore-permissions @@ -23,7 +23,7 @@ DROP DATABASE d; ---- exec-sql user=testuser -RESTORE DATABASE d FROM 'nodelocal://0/test/'; +RESTORE DATABASE d FROM LATEST IN 'nodelocal://0/test/'; ---- # Start a new cluster with the same IO dir. @@ -36,12 +36,12 @@ CREATE USER testuser # Restore into the new cluster. exec-sql server=s2 user=testuser -RESTORE FROM 'nodelocal://0/test/' +RESTORE FROM LATEST IN 'nodelocal://0/test/' ---- pq: only users with the admin role are allowed to restore full cluster backups exec-sql server=s2 user=testuser -RESTORE DATABASE d FROM 'nodelocal://0/test/' +RESTORE DATABASE d FROM LATEST IN 'nodelocal://0/test/' ---- pq: only users with the CREATEDB privilege can restore databases @@ -50,7 +50,7 @@ CREATE DATABASE d ---- exec-sql server=s2 user=testuser -RESTORE TABLE d.t FROM 'nodelocal://0/test/' +RESTORE TABLE d.t FROM LATEST IN 'nodelocal://0/test/' ---- pq: user testuser does not have CREATE privilege on database d @@ -59,7 +59,7 @@ GRANT CREATE ON DATABASE d TO testuser ---- exec-sql server=s2 user=testuser -RESTORE TABLE d.t FROM 'nodelocal://0/test/' +RESTORE TABLE d.t FROM LATEST IN 'nodelocal://0/test/' ---- query-sql server=s2 @@ -78,7 +78,7 @@ ALTER USER testuser CREATEDB ---- exec-sql server=s2 user=testuser -RESTORE DATABASE d FROM 'nodelocal://0/test/' +RESTORE DATABASE d FROM LATEST IN 'nodelocal://0/test/' ---- query-sql server=s2 @@ -97,6 +97,6 @@ CREATE USER testuser ---- exec-sql server=s3 user=testuser -RESTORE TABLE d.t FROM 'nodelocal://0/test/' +RESTORE TABLE d.t FROM LATEST IN 'nodelocal://0/test/' ---- pq: only users with the admin role are allowed to RESTORE from the specified nodelocal URI diff --git a/pkg/ccl/backupccl/testdata/backup-restore/row_level_ttl b/pkg/ccl/backupccl/testdata/backup-restore/row_level_ttl index cb73c6e9d4c3..94d8571a77a6 100644 --- a/pkg/ccl/backupccl/testdata/backup-restore/row_level_ttl +++ b/pkg/ccl/backupccl/testdata/backup-restore/row_level_ttl @@ -25,7 +25,7 @@ WHERE label LIKE 'row-level-ttl-%' 0 exec-sql -RESTORE FROM 'nodelocal://0/full_cluster_backup/' +RESTORE FROM LATEST IN 'nodelocal://0/full_cluster_backup/' ---- query-sql @@ -54,7 +54,7 @@ WHERE label LIKE 'row-level-ttl-%' 0 exec-sql -RESTORE DATABASE d FROM 'nodelocal://0/database_backup/' +RESTORE DATABASE d FROM LATEST IN 'nodelocal://0/database_backup/' ---- query-sql @@ -87,7 +87,7 @@ CREATE DATABASE d ---- exec-sql -RESTORE TABLE d.public.t FROM 'nodelocal://0/database_backup/' +RESTORE TABLE d.public.t FROM LATEST IN 'nodelocal://0/database_backup/' ---- query-sql diff --git a/pkg/ccl/backupccl/testdata/backup-restore/temp-tables b/pkg/ccl/backupccl/testdata/backup-restore/temp-tables index 658dc03ed00d..6418363b014f 100644 --- a/pkg/ccl/backupccl/testdata/backup-restore/temp-tables +++ b/pkg/ccl/backupccl/testdata/backup-restore/temp-tables @@ -59,7 +59,7 @@ DROP DATABASE d1 ---- exec-sql -RESTORE DATABASE d1 FROM 'nodelocal://0/d1_backup/' +RESTORE DATABASE d1 FROM LATEST IN 'nodelocal://0/d1_backup/' ---- exec-sql @@ -88,7 +88,7 @@ DROP DATABASE d1 ---- exec-sql -RESTORE DATABASE d1 FROM 'nodelocal://0/d1_star_backup/' +RESTORE DATABASE d1 FROM LATEST IN 'nodelocal://0/d1_star_backup/' ---- exec-sql @@ -120,7 +120,7 @@ USE defaultdb; ---- exec-sql -RESTORE FROM 'nodelocal://0/full_cluster_backup/'; +RESTORE FROM LATEST IN 'nodelocal://0/full_cluster_backup/'; ---- # The pg_temp schema from the BACKUP should show up in its original database. diff --git a/pkg/ccl/backupccl/testdata/backup-restore/user-defined-types b/pkg/ccl/backupccl/testdata/backup-restore/user-defined-types index 557f085f8644..a7cc238c26fa 100644 --- a/pkg/ccl/backupccl/testdata/backup-restore/user-defined-types +++ b/pkg/ccl/backupccl/testdata/backup-restore/user-defined-types @@ -29,7 +29,7 @@ new-server name=s2 share-io-dir=s1 # Restore into the new cluster. exec-sql server=s2 -RESTORE FROM 'nodelocal://0/test/' +RESTORE FROM LATEST IN 'nodelocal://0/test/' ---- # Check all of the tables have the right data. @@ -129,7 +129,7 @@ CREATE TABLE d.expr ( # Backup the database now. exec-sql -BACKUP DATABASE d INTO LATEST IN 'nodelocal://0/test/' +BACKUP DATABASE d INTO 'nodelocal://0/test/' ---- exec-sql @@ -137,7 +137,7 @@ DROP DATABASE d ---- exec-sql -RESTORE DATABASE d FROM 'nodelocal://0/test/'; +RESTORE DATABASE d FROM LATEST IN 'nodelocal://0/test/'; ---- # Check the table data. diff --git a/pkg/ccl/backupccl/testdata/backup-restore/virtual-columns b/pkg/ccl/backupccl/testdata/backup-restore/virtual-columns index 1072437d8ef9..37cdb14e1b2b 100644 --- a/pkg/ccl/backupccl/testdata/backup-restore/virtual-columns +++ b/pkg/ccl/backupccl/testdata/backup-restore/virtual-columns @@ -26,7 +26,7 @@ new-server name=s2 share-io-dir=s1 ---- exec-sql server=s2 -RESTORE FROM 'nodelocal://0/test/' +RESTORE FROM LATEST IN 'nodelocal://0/test/' ---- query-sql