@@ -20,6 +20,7 @@ import (
20
20
"github.com/cockroachdb/cockroach/pkg/sql/sem/tree"
21
21
"github.com/cockroachdb/cockroach/pkg/sql/sessiondata"
22
22
"github.com/cockroachdb/cockroach/pkg/upgrade"
23
+ "github.com/cockroachdb/cockroach/pkg/util/hlc"
23
24
"github.com/cockroachdb/cockroach/pkg/util/log"
24
25
"github.com/cockroachdb/cockroach/pkg/util/protoutil"
25
26
"github.com/cockroachdb/errors"
@@ -234,6 +235,12 @@ func createDefaultDbs(
234
235
// already.
235
236
const createDbStmt = `CREATE DATABASE IF NOT EXISTS "%s" WITH OWNER root`
236
237
238
+ id , _ , _ := readerTenantInfo (ctx , deps )
239
+ if id .IsSet () {
240
+ // Don't create the default databases for read from standby tenants.
241
+ return nil
242
+ }
243
+
237
244
var err error
238
245
for _ , dbName := range []string {catalogkeys .DefaultDatabaseName , catalogkeys .PgDatabaseName } {
239
246
stmt := fmt .Sprintf (createDbStmt , dbName )
@@ -245,3 +252,21 @@ func createDefaultDbs(
245
252
}
246
253
return nil
247
254
}
255
+
256
+ // readerTenantInfo returns the tenant ID and timestamp if we're spinning up a
257
+ // read from standby tenant.
258
+ func readerTenantInfo (
259
+ ctx context.Context , d upgrade.TenantDeps ,
260
+ ) (roachpb.TenantID , hlc.Timestamp , error ) {
261
+ if d .TenantInfoAccessor == nil {
262
+ return roachpb.TenantID {}, hlc.Timestamp {}, nil
263
+ }
264
+ id , ts , err := d .TenantInfoAccessor .ReadFromTenantInfo (ctx )
265
+ if err != nil {
266
+ return roachpb.TenantID {}, hlc.Timestamp {}, err
267
+ }
268
+ if ! id .IsSet () {
269
+ return roachpb.TenantID {}, hlc.Timestamp {}, nil
270
+ }
271
+ return id , ts , nil
272
+ }
0 commit comments