Skip to content

Commit

Permalink
Fix for failing test case
Browse files Browse the repository at this point in the history
Task: BABEL-2170

Signed-off-by: Deepakshi Mittal <[email protected]>
  • Loading branch information
deepakshi-mittal committed Nov 2, 2023
1 parent df82ca7 commit 4ab85a0
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 140 deletions.
7 changes: 0 additions & 7 deletions contrib/babelfishpg_tsql/src/hooks.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)")));
}
}
}

Expand Down
84 changes: 10 additions & 74 deletions test/JDBC/expected/BABEL-2170-vu-verify.out
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
67 changes: 8 additions & 59 deletions test/JDBC/input/triggers/BABEL-2170-vu-verify.sql
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 4ab85a0

Please sign in to comment.