@@ -1727,12 +1727,12 @@ func GetReverseJobID(
17271727 var jobID jobspb.JobID
17281728 testutils .SucceedsSoon (t , func () error {
17291729 err := db .DB .QueryRowContext (ctx , `
1730- SELECT id
1731- FROM system.jobs
1732- WHERE job_type = 'LOGICAL REPLICATION'
1730+ SELECT id
1731+ FROM system.jobs
1732+ WHERE job_type = 'LOGICAL REPLICATION'
17331733 AND id != $1
17341734 AND created > $2
1735- ORDER BY created DESC
1735+ ORDER BY created DESC
17361736 LIMIT 1` ,
17371737 parentID , created ).Scan (& jobID )
17381738 if err != nil {
@@ -2905,3 +2905,46 @@ func TestGetWriterType(t *testing.T) {
29052905 require .Equal (t , sqlclustersettings .LDRWriterTypeSQL , wt )
29062906 })
29072907}
2908+
2909+ func TestLogicalReplicationExternalConnWithoutDBName (t * testing.T ) {
2910+ defer leaktest .AfterTest (t )()
2911+ defer log .Scope (t ).Close (t )
2912+
2913+ ctx := context .Background ()
2914+
2915+ server , s , dbA , dbB := setupLogicalTestServer (t , ctx , testClusterBaseClusterArgs , 1 )
2916+ defer server .Stopper ().Stop (ctx )
2917+
2918+ dbA .Exec (t , "CREATE TABLE a.public.foo (x INT PRIMARY KEY)" )
2919+ dbA .Exec (t , "INSERT INTO a.public.foo SELECT * FROM generate_series(1, 10)" )
2920+ dbA .Exec (t , "CREATE USER userA WITH PASSWORD '123'" )
2921+ dbA .Exec (t , "GRANT REPLICATIONSOURCE, REPLICATIONDEST ON TABLE a.public.foo TO userA" )
2922+ dbAURL := replicationtestutils .GetExternalConnectionURI (
2923+ t , s , s , serverutils .ClientCerts (false ), serverutils .UserPassword ("userA" , "123" ),
2924+ )
2925+
2926+ dbB .Exec (t , "CREATE USER userB WITH PASSWORD '123'" )
2927+ dbB .Exec (t , "GRANT CREATE ON DATABASE b TO userB" )
2928+ dbBURL := replicationtestutils .GetExternalConnectionURI (
2929+ t , s , s , serverutils .ClientCerts (false ), serverutils .UserPassword ("userB" , "123" ),
2930+ )
2931+
2932+ dbBAsUser := sqlutils .MakeSQLRunner (s .SQLConn (
2933+ t ,
2934+ serverutils .DBName ("b" ),
2935+ serverutils .ClientCerts (false ),
2936+ serverutils .UserPassword ("userB" , "123" ),
2937+ ))
2938+
2939+ var jobID jobspb.JobID
2940+ dbBAsUser .QueryRow (
2941+ t ,
2942+ "CREATE LOGICALLY REPLICATED TABLE b.public.foo FROM TABLE a.public.foo ON $1 WITH BIDIRECTIONAL ON $2" ,
2943+ dbAURL .String (),
2944+ dbBURL .String (),
2945+ ).Scan (& jobID )
2946+ WaitUntilReplicatedTime (t , s .Clock ().Now (), dbB , jobID )
2947+
2948+ reverseJobID := GetReverseJobID (ctx , t , dbA , jobID )
2949+ WaitUntilReplicatedTime (t , s .Clock ().Now (), dbA , reverseJobID )
2950+ }
0 commit comments