From 4ab85a088eee6d6156b646b022519aab9a65378a Mon Sep 17 00:00:00 2001 From: Deepakshi Mittal Date: Thu, 2 Nov 2023 08:41:52 +0000 Subject: [PATCH] Fix for failing test case Task: BABEL-2170 Signed-off-by: Deepakshi Mittal --- contrib/babelfishpg_tsql/src/hooks.c | 7 -- test/JDBC/expected/BABEL-2170-vu-verify.out | 84 +++---------------- .../input/triggers/BABEL-2170-vu-verify.sql | 67 ++------------- 3 files changed, 18 insertions(+), 140 deletions(-) diff --git a/contrib/babelfishpg_tsql/src/hooks.c b/contrib/babelfishpg_tsql/src/hooks.c index b1a151b7ab0..54eaa66ebcd 100644 --- a/contrib/babelfishpg_tsql/src/hooks.c +++ b/contrib/babelfishpg_tsql/src/hooks.c @@ -733,13 +733,6 @@ pltsql_bbfViewHasInsteadofTrigger(Relation view, CmdType event) { return false; /** Direct recursive trigger case*/ } - else if (list_member_oid(triggerOids, current_tgoid)) - { - /** Indirect recursive trigger case*/ - ereport(ERROR, - (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("Maximum stored procedure, function, trigger, or view nesting level exceeded (limit 32)"))); - } } } diff --git a/test/JDBC/expected/BABEL-2170-vu-verify.out b/test/JDBC/expected/BABEL-2170-vu-verify.out index 3e1386e68a1..472cbad0c44 100644 --- a/test/JDBC/expected/BABEL-2170-vu-verify.out +++ b/test/JDBC/expected/BABEL-2170-vu-verify.out @@ -55,7 +55,7 @@ Trigger db1_BABEL2170.dbo.babel_2170_vu_employees_view_iot_update Invoked ~~ROW COUNT: 1~~ -SELECT EmployeeID,EmployeeName, EmployeeAddress, MonthSalary FROM babel_2170_vu_employees WHERE EmployeeID = 2 ORDER BY EmployeeID; +SELECT EmployeeID,EmployeeName, EmployeeAddress, MonthSalary FROM babel_2170_vu_employees WHERE EmployeeID = 2; GO ~~START~~ int#!#varchar#!#varchar#!#numeric @@ -484,97 +484,33 @@ DROP TRIGGER IF EXISTS babel_2170_vu_employees_view_iot_txn_delete; GO -- Recursive Trigger test Direct Recursion Trigger calling itself trigger 1 -> trigger 1 -DROP TRIGGER IF EXISTS babel_2170_vu_employees_view_iot_insert; +DROP TRIGGER IF EXISTS babel_2170_vu_employees_view_iot_update; GO -CREATE TRIGGER babel_2170_vu_employees_view_iot_insert ON babel_2170_vu_employees_view -INSTEAD OF INSERT +CREATE TRIGGER babel_2170_vu_employees_view_iot_update ON babel_2170_vu_employees_view +INSTEAD OF UPDATE AS BEGIN - INSERT INTO babel_2170_vu_employees_view VALUES(3, 'adam', '1st Street', '3000'); + UPDATE babel_2170_vu_employees_view SET MonthSalary = MonthSalary +100 WHERE EmployeeID = 2; END GO -INSERT INTO babel_2170_vu_employees_view VALUES(3, 'adam', '1st Street', '3000'); +UPDATE babel_2170_vu_employees_view SET MonthSalary = MonthSalary +1 WHERE EmployeeID = 2; GO ~~ROW COUNT: 1~~ ~~ROW COUNT: 1~~ -SELECT COUNT(EmployeeID) FROM babel_2170_vu_employees; -GO -~~START~~ -int -3 -~~END~~ - - -SELECT COUNT(EmployeeID) FROM babel_2170_vu_employees_view; +SELECT EmployeeID, EmployeeName, EmployeeAddress, MonthSalary FROM babel_2170_vu_employees_view WHERE EmployeeID = 2; GO ~~START~~ -int -3 +int#!#varchar#!#varchar#!#numeric +2#!#angel#!#1st Street#!#2100.00 ~~END~~ - --- Recursive Trigger test Indirect Recursion trigger 1 -> trigger 2 -> trigger 1 -CREATE TABLE babel_2170_vu_employees_rec -( - EmployeeID int NOT NULL, - EmployeeName VARCHAR(50), - EmployeeAddress VARCHAR(50), - MonthSalary NUMERIC(10, 2) -) -GO - -CREATE VIEW babel_2170_vu_employees_view_rec AS -SELECT EmployeeID, - EmployeeName, - EmployeeAddress, - MonthSalary -FROM babel_2170_vu_employees_rec -WHERE EmployeeName LIKE 'a%'; -GO - -CREATE TRIGGER babel_2170_vu_employees_view_iot_rec ON babel_2170_vu_employees_view -INSTEAD OF INSERT -AS -BEGIN - INSERT INTO babel_2170_vu_employees_view_rec VALUES(4, 'adam', '1st Street', '4000'); -END -GO -~~ERROR (Code: 33557097)~~ - -~~ERROR (Message: cannot create trigger "babel_2170_vu_employees_view_iot_rec" for relation "babel_2170_vu_employees_view" because an INSTEAD OF INSERT trigger already exists on this object.)~~ - - -CREATE TRIGGER babel_2170_vu_employees_view_iot_rec2 ON babel_2170_vu_employees_view_rec -INSTEAD OF INSERT -AS -BEGIN - INSERT INTO babel_2170_vu_employees_view VALUES(4, 'adam', '1st Street', '4000'); -END -GO - -INSERT INTO babel_2170_vu_employees_view VALUES(4, 'adam', '1st Street', '4000'); -GO -~~ROW COUNT: 1~~ - -~~ROW COUNT: 1~~ - - -DROP TRIGGER IF EXISTS babel_2170_vu_employees_view_iot_rec; -GO - -DROP TRIGGER IF EXISTS babel_2170_vu_employees_view_iot_rec2; -GO - -DROP VIEW IF EXISTS babel_2170_vu_employees_view_rec; -GO - -DROP TABLE IF EXISTS babel_2170_vu_employees_rec; +DROP TRIGGER IF EXISTS babel_2170_vu_employees_view_iot_update; GO -- test multi-db mode diff --git a/test/JDBC/input/triggers/BABEL-2170-vu-verify.sql b/test/JDBC/input/triggers/BABEL-2170-vu-verify.sql index 0b2253dea7d..f5cfa356fee 100644 --- a/test/JDBC/input/triggers/BABEL-2170-vu-verify.sql +++ b/test/JDBC/input/triggers/BABEL-2170-vu-verify.sql @@ -31,7 +31,7 @@ GO UPDATE babel_2170_vu_employees_view SET MonthSalary = MonthSalary +1 WHERE EmployeeID = 2; GO -SELECT EmployeeID,EmployeeName, EmployeeAddress, MonthSalary FROM babel_2170_vu_employees WHERE EmployeeID = 2 ORDER BY EmployeeID; +SELECT EmployeeID,EmployeeName, EmployeeAddress, MonthSalary FROM babel_2170_vu_employees WHERE EmployeeID = 2; GO BEGIN TRANSACTION @@ -254,75 +254,24 @@ DROP TRIGGER IF EXISTS babel_2170_vu_employees_view_iot_txn_delete; GO -- Recursive Trigger test Direct Recursion Trigger calling itself trigger 1 -> trigger 1 -DROP TRIGGER IF EXISTS babel_2170_vu_employees_view_iot_insert; -GO - -CREATE TRIGGER babel_2170_vu_employees_view_iot_insert ON babel_2170_vu_employees_view -INSTEAD OF INSERT -AS -BEGIN - INSERT INTO babel_2170_vu_employees_view VALUES(3, 'adam', '1st Street', '3000'); -END -GO - -INSERT INTO babel_2170_vu_employees_view VALUES(3, 'adam', '1st Street', '3000'); -GO - -SELECT COUNT(EmployeeID) FROM babel_2170_vu_employees; -GO - -SELECT COUNT(EmployeeID) FROM babel_2170_vu_employees_view; +DROP TRIGGER IF EXISTS babel_2170_vu_employees_view_iot_update; GO --- Recursive Trigger test Indirect Recursion trigger 1 -> trigger 2 -> trigger 1 - -CREATE TABLE babel_2170_vu_employees_rec -( - EmployeeID int NOT NULL, - EmployeeName VARCHAR(50), - EmployeeAddress VARCHAR(50), - MonthSalary NUMERIC(10, 2) -) -GO - -CREATE VIEW babel_2170_vu_employees_view_rec AS -SELECT EmployeeID, - EmployeeName, - EmployeeAddress, - MonthSalary -FROM babel_2170_vu_employees_rec -WHERE EmployeeName LIKE 'a%'; -GO - -CREATE TRIGGER babel_2170_vu_employees_view_iot_rec ON babel_2170_vu_employees_view -INSTEAD OF INSERT -AS -BEGIN - INSERT INTO babel_2170_vu_employees_view_rec VALUES(4, 'adam', '1st Street', '4000'); -END -GO - -CREATE TRIGGER babel_2170_vu_employees_view_iot_rec2 ON babel_2170_vu_employees_view_rec -INSTEAD OF INSERT +CREATE TRIGGER babel_2170_vu_employees_view_iot_update ON babel_2170_vu_employees_view +INSTEAD OF UPDATE AS BEGIN - INSERT INTO babel_2170_vu_employees_view VALUES(4, 'adam', '1st Street', '4000'); + UPDATE babel_2170_vu_employees_view SET MonthSalary = MonthSalary +100 WHERE EmployeeID = 2; END GO -INSERT INTO babel_2170_vu_employees_view VALUES(4, 'adam', '1st Street', '4000'); -GO - -DROP TRIGGER IF EXISTS babel_2170_vu_employees_view_iot_rec; -GO - -DROP TRIGGER IF EXISTS babel_2170_vu_employees_view_iot_rec2; +UPDATE babel_2170_vu_employees_view SET MonthSalary = MonthSalary +1 WHERE EmployeeID = 2; GO -DROP VIEW IF EXISTS babel_2170_vu_employees_view_rec; +SELECT EmployeeID, EmployeeName, EmployeeAddress, MonthSalary FROM babel_2170_vu_employees_view WHERE EmployeeID = 2; GO -DROP TABLE IF EXISTS babel_2170_vu_employees_rec; +DROP TRIGGER IF EXISTS babel_2170_vu_employees_view_iot_update; GO -- test multi-db mode