Skip to content

Commit 4712f6a

Browse files
authored
Add cross-db testcases for Table Valued function (#3802) (#3803)
Fixed behavior of cross-database table valued functions Earlier, tabled valued function was not working for cross-db scenarios, with this commit we have fixed it's behaviour. Engine PR : babelfish-for-postgresql/postgresql_modified_for_babelfish#583 Task: BABEL-5792 Signed-off-by: ANJU BHARTI <[email protected]>
1 parent b360440 commit 4712f6a

14 files changed

+1010
-106
lines changed

test/JDBC/expected/BABEL-CROSS-DB-vu-cleanup.out

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ GO
4848
DROP FUNCTION babel_cross_db_vu_prepare_s1.babel_cross_db_vu_prepare_f1;
4949
GO
5050

51+
DROP FUNCTION babel_cross_db_vu_prepare_s1.babel_cross_db_vu_prepare_tvf1;
52+
GO
53+
5154
DROP PROCEDURE babel_cross_db_vu_prepare_s1.babel_cross_db_vu_prepare_p1_nested;
5255
GO
5356

@@ -84,12 +87,18 @@ GO
8487
DROP FUNCTION dbo.babel_cross_db_vu_prepare_f2;
8588
GO
8689

90+
DROP FUNCTION dbo.babel_cross_db_vu_prepare_tvf2;
91+
GO
92+
8793
DROP VIEW babel_cross_db_vu_prepare_s2.babel_cross_db_vu_prepare_v2;
8894
GO
8995

9096
DROP FUNCTION babel_cross_db_vu_prepare_s2.babel_cross_db_vu_prepare_f2;
9197
GO
9298

99+
DROP FUNCTION babel_cross_db_vu_prepare_s2.babel_cross_db_vu_prepare_tvf2;
100+
GO
101+
93102
DROP TABLE babel_cross_db_vu_prepare_s2.babel_cross_db_vu_prepare_t2;
94103
GO
95104

test/JDBC/expected/BABEL-CROSS-DB-vu-prepare.out

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,11 @@ CREATE FUNCTION dbo.babel_cross_db_vu_prepare_f2 (@a int)
102102
END;
103103
GO
104104

105+
CREATE FUNCTION dbo.babel_cross_db_vu_prepare_tvf2()
106+
RETURNS TABLE AS
107+
RETURN select 'IT IS TVF' as col;
108+
GO
109+
105110
-- tsql user=babel_cross_db_vu_prepare_l1 password=12345678
106111
USE my_babel_cross_db_vu_prepare_db1;
107112
GO
@@ -121,8 +126,14 @@ CREATE FUNCTION babel_cross_db_vu_prepare_s2.babel_cross_db_vu_prepare_f2 (@a in
121126
END;
122127
GO
123128

129+
CREATE FUNCTION babel_cross_db_vu_prepare_s2.babel_cross_db_vu_prepare_tvf2()
130+
RETURNS TABLE AS
131+
RETURN select 'IT IS TVF' as col;
132+
GO
133+
124134
CREATE VIEW babel_cross_db_vu_prepare_s2.babel_cross_db_vu_prepare_v2 AS
125-
SELECT id, babel_cross_db_vu_prepare_s2.babel_cross_db_vu_prepare_f2(id), name
135+
SELECT id, babel_cross_db_vu_prepare_s2.babel_cross_db_vu_prepare_f2(id),
136+
babel_cross_db_vu_prepare_s2.babel_cross_db_vu_prepare_tvf2(), name
126137
FROM babel_cross_db_vu_prepare_s2.babel_cross_db_vu_prepare_t2
127138
ORDER BY id;
128139
GO
@@ -148,6 +159,7 @@ GO
148159
CREATE VIEW babel_cross_db_vu_prepare_s1.babel_cross_db_vu_prepare_v1 AS
149160
SELECT x.id,
150161
my_babel_cross_db_vu_prepare_db1.babel_cross_db_vu_prepare_s2.babel_cross_db_vu_prepare_f2(x.id),
162+
my_babel_cross_db_vu_prepare_db1.babel_cross_db_vu_prepare_s2.babel_cross_db_vu_prepare_tvf2(),
151163
x.name AS t1_name,
152164
y.name AS t2_name
153165
FROM babel_cross_db_vu_prepare_s1.babel_cross_db_vu_prepare_t1 x INNER JOIN
@@ -165,7 +177,8 @@ GO
165177

166178
-- View containing cross-db function on which login babel_cross_db_vu_prepare_l1 does not have privilege
167179
CREATE VIEW babel_cross_db_vu_prepare_s1.babel_cross_db_vu_prepare_v3 AS
168-
SELECT my_babel_cross_db_vu_prepare_db1.dbo.babel_cross_db_vu_prepare_f2(id) AS id, name
180+
SELECT my_babel_cross_db_vu_prepare_db1.dbo.babel_cross_db_vu_prepare_f2(id) AS id,
181+
my_babel_cross_db_vu_prepare_db1.dbo.babel_cross_db_vu_prepare_tvf2(), name
169182
FROM babel_cross_db_vu_prepare_s1.babel_cross_db_vu_prepare_t1
170183
ORDER BY id;
171184
GO
@@ -200,6 +213,11 @@ CREATE FUNCTION babel_cross_db_vu_prepare_s1.babel_cross_db_vu_prepare_f1 (@a in
200213
END;
201214
GO
202215

216+
CREATE FUNCTION babel_cross_db_vu_prepare_s1.babel_cross_db_vu_prepare_tvf1()
217+
RETURNS TABLE AS
218+
RETURN SELECT my_babel_cross_db_vu_prepare_db1.babel_cross_db_vu_prepare_s2.babel_cross_db_vu_prepare_tvf2();
219+
GO
220+
203221
CREATE VIEW babel_cross_db_vu_prepare_s1.babel_cross_db_vu_prepare_v1_nested AS
204222
SELECT * FROM babel_cross_db_vu_prepare_s1.babel_cross_db_vu_prepare_v1;
205223
GO
@@ -217,7 +235,8 @@ CREATE VIEW babel_cross_db_vu_prepare_s1.babel_cross_db_vu_prepare_v4_nested AS
217235
GO
218236

219237
CREATE VIEW babel_cross_db_vu_prepare_s1.babel_cross_db_vu_prepare_v5_nested AS
220-
SELECT babel_cross_db_vu_prepare_s1.babel_cross_db_vu_prepare_f1(1) AS id;
238+
SELECT babel_cross_db_vu_prepare_s1.babel_cross_db_vu_prepare_f1(1) AS id,
239+
babel_cross_db_vu_prepare_s1.babel_cross_db_vu_prepare_tvf1();
221240
GO
222241

223242
CREATE PROCEDURE babel_cross_db_vu_prepare_s1.babel_cross_db_vu_prepare_p1_nested

test/JDBC/expected/BABEL-CROSS-DB-vu-verify.out

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -436,8 +436,8 @@ int#!#varchar
436436
SELECT * FROM my_babel_cross_db_vu_prepare_db1.babel_cross_db_vu_prepare_s2.babel_cross_db_vu_prepare_v2;
437437
GO
438438
~~START~~
439-
int#!#int#!#varchar
440-
1#!#1#!#abc
439+
int#!#int#!#varchar#!#varchar
440+
1#!#1#!#IT IS TVF#!#abc
441441
~~END~~
442442

443443

@@ -450,6 +450,14 @@ int
450450
~~END~~
451451

452452

453+
SELECT my_babel_cross_db_vu_prepare_db1.babel_cross_db_vu_prepare_s2.babel_cross_db_vu_prepare_tvf2();
454+
GO
455+
~~START~~
456+
varchar
457+
IT IS TVF
458+
~~END~~
459+
460+
453461
-- bare SELECT table from db1, which login babel_cross_db_vu_prepare_l1 does not have privilege, should throw error
454462
SELECT * FROM my_babel_cross_db_vu_prepare_db1.dbo.babel_cross_db_vu_prepare_t2 ORDER BY id;
455463
GO
@@ -466,28 +474,35 @@ GO
466474
~~ERROR (Message: permission denied for function babel_cross_db_vu_prepare_f2)~~
467475

468476

477+
SELECT my_babel_cross_db_vu_prepare_db1.dbo.babel_cross_db_vu_prepare_tvf2();
478+
GO
479+
~~ERROR (Code: 33557097)~~
480+
481+
~~ERROR (Message: permission denied for function babel_cross_db_vu_prepare_tvf2)~~
482+
483+
469484
-- SELECT from a view in db1 which references objects in db1, which login babel_cross_db_vu_prepare_l1 has privilege, should be successful
470485
SELECT * FROM babel_cross_db_vu_prepare_s1.babel_cross_db_vu_prepare_v1;
471486
GO
472487
~~START~~
473-
int#!#int#!#varchar#!#varchar
474-
1#!#1#!#def#!#abc
488+
int#!#int#!#varchar#!#varchar#!#varchar
489+
1#!#1#!#IT IS TVF#!#def#!#abc
475490
~~END~~
476491

477492

478493
SELECT * FROM babel_cross_db_vu_prepare_s1.babel_cross_db_vu_prepare_v1_nested;
479494
GO
480495
~~START~~
481-
int#!#int#!#varchar#!#varchar
482-
1#!#1#!#def#!#abc
496+
int#!#int#!#varchar#!#varchar#!#varchar
497+
1#!#1#!#IT IS TVF#!#def#!#abc
483498
~~END~~
484499

485500

486501
SELECT * FROM babel_cross_db_vu_prepare_s1.babel_cross_db_vu_prepare_v5_nested;
487502
GO
488503
~~START~~
489-
int
490-
1
504+
int#!#varchar
505+
1#!#IT IS TVF
491506
~~END~~
492507

493508

@@ -545,8 +560,8 @@ int#!#varchar
545560
~~END~~
546561

547562
~~START~~
548-
int#!#int#!#varchar
549-
1#!#1#!#abc
563+
int#!#int#!#varchar#!#varchar
564+
1#!#1#!#IT IS TVF#!#abc
550565
~~END~~
551566

552567

@@ -564,8 +579,8 @@ int#!#varchar
564579
~~END~~
565580

566581
~~START~~
567-
int#!#int#!#varchar#!#varchar
568-
1#!#1#!#def#!#abc
582+
int#!#int#!#varchar#!#varchar#!#varchar
583+
1#!#1#!#IT IS TVF#!#def#!#abc
569584
~~END~~
570585

571586
~~ERROR (Code: 33557097)~~
@@ -586,8 +601,8 @@ int#!#varchar
586601
~~END~~
587602

588603
~~START~~
589-
int#!#int#!#varchar#!#varchar
590-
1#!#1#!#def#!#abc
604+
int#!#int#!#varchar#!#varchar#!#varchar
605+
1#!#1#!#IT IS TVF#!#def#!#abc
591606
~~END~~
592607

593608
~~ERROR (Code: 33557097)~~
@@ -612,8 +627,8 @@ int#!#varchar
612627
~~END~~
613628

614629
~~START~~
615-
int#!#int#!#varchar#!#varchar
616-
1#!#1#!#def#!#abc
630+
int#!#int#!#varchar#!#varchar#!#varchar
631+
1#!#1#!#IT IS TVF#!#def#!#abc
617632
~~END~~
618633

619634
~~ERROR (Code: 33557097)~~
@@ -638,8 +653,8 @@ int#!#varchar
638653
~~END~~
639654

640655
~~START~~
641-
int#!#int#!#varchar#!#varchar
642-
1#!#1#!#def#!#abc
656+
int#!#int#!#varchar#!#varchar#!#varchar
657+
1#!#1#!#IT IS TVF#!#def#!#abc
643658
~~END~~
644659

645660
~~ERROR (Code: 33557097)~~

0 commit comments

Comments
 (0)