Skip to content
Snippets Groups Projects
Commit fe90d9f3 authored by Bulat Niatshin's avatar Bulat Niatshin Committed by Kirill Yukhin
Browse files

sql: check trigger removal after dropping table

- Check attached trigger removal when DROP TABLE statement is
executed for referred table
- Implement sql/gh2141-delete-trigger-drop-table.test.lua test
- Assure that #2141 is not a bug, everything works correctly

Closes #2141
parent a7b55ab0
No related branches found
No related tags found
No related merge requests found
test_run = require('test_run').new()
---
...
-- create space
box.sql.execute("DROP TABLE IF EXISTS t")
---
...
box.sql.execute("CREATE TABLE t(id PRIMARY KEY)")
---
...
-- create before update trigger
box.sql.execute("CREATE TRIGGER tt_bu BEFORE UPDATE ON t BEGIN SELECT 1; END")
---
...
-- create after update trigger
box.sql.execute("CREATE TRIGGER tt_au AFTER UPDATE ON t BEGIN SELECT 1; END")
---
...
-- create before insert trigger
box.sql.execute("CREATE TRIGGER tt_bi BEFORE INSERT ON t BEGIN SELECT 1; END")
---
...
-- create after insert trigger
box.sql.execute("CREATE TRIGGER tt_ai AFTER INSERT ON t BEGIN SELECT 1; END")
---
...
-- create before delete trigger
box.sql.execute("CREATE TRIGGER tt_bd BEFORE DELETE ON t BEGIN SELECT 1; END")
---
...
-- create after delete trigger
box.sql.execute("CREATE TRIGGER tt_ad AFTER DELETE ON t BEGIN SELECT 1; END")
---
...
-- check that this triggers exist
box.sql.execute("SELECT * FROM _trigger")
---
- - ['tt_ad', !!binary gaNzcWzZOkNSRUFURSBUUklHR0VSIHR0X2FkIEFGVEVSIERFTEVURSBPTiB0IEJFR0lOIFNFTEVDVCAxOyBFTkQ=]
- ['tt_ai', !!binary gaNzcWzZOkNSRUFURSBUUklHR0VSIHR0X2FpIEFGVEVSIElOU0VSVCBPTiB0IEJFR0lOIFNFTEVDVCAxOyBFTkQ=]
- ['tt_au', !!binary gaNzcWzZOkNSRUFURSBUUklHR0VSIHR0X2F1IEFGVEVSIFVQREFURSBPTiB0IEJFR0lOIFNFTEVDVCAxOyBFTkQ=]
- ['tt_bd', !!binary gaNzcWzZO0NSRUFURSBUUklHR0VSIHR0X2JkIEJFRk9SRSBERUxFVEUgT04gdCBCRUdJTiBTRUxFQ1QgMTsgRU5E]
- ['tt_bi', !!binary gaNzcWzZO0NSRUFURSBUUklHR0VSIHR0X2JpIEJFRk9SRSBJTlNFUlQgT04gdCBCRUdJTiBTRUxFQ1QgMTsgRU5E]
- ['tt_bu', !!binary gaNzcWzZO0NSRUFURSBUUklHR0VSIHR0X2J1IEJFRk9SRSBVUERBVEUgT04gdCBCRUdJTiBTRUxFQ1QgMTsgRU5E]
...
-- drop table
box.sql.execute("DROP TABLE t IF EXISTS")
---
- error: 'near "IF": syntax error'
...
-- check that triggers were dropped with deleted table
box.sql.execute("SELECT * FROM _trigger")
---
- - ['tt_ad', !!binary gaNzcWzZOkNSRUFURSBUUklHR0VSIHR0X2FkIEFGVEVSIERFTEVURSBPTiB0IEJFR0lOIFNFTEVDVCAxOyBFTkQ=]
- ['tt_ai', !!binary gaNzcWzZOkNSRUFURSBUUklHR0VSIHR0X2FpIEFGVEVSIElOU0VSVCBPTiB0IEJFR0lOIFNFTEVDVCAxOyBFTkQ=]
- ['tt_au', !!binary gaNzcWzZOkNSRUFURSBUUklHR0VSIHR0X2F1IEFGVEVSIFVQREFURSBPTiB0IEJFR0lOIFNFTEVDVCAxOyBFTkQ=]
- ['tt_bd', !!binary gaNzcWzZO0NSRUFURSBUUklHR0VSIHR0X2JkIEJFRk9SRSBERUxFVEUgT04gdCBCRUdJTiBTRUxFQ1QgMTsgRU5E]
- ['tt_bi', !!binary gaNzcWzZO0NSRUFURSBUUklHR0VSIHR0X2JpIEJFRk9SRSBJTlNFUlQgT04gdCBCRUdJTiBTRUxFQ1QgMTsgRU5E]
- ['tt_bu', !!binary gaNzcWzZO0NSRUFURSBUUklHR0VSIHR0X2J1IEJFRk9SRSBVUERBVEUgT04gdCBCRUdJTiBTRUxFQ1QgMTsgRU5E]
...
test_run = require('test_run').new()
-- create space
box.sql.execute("DROP TABLE IF EXISTS t")
box.sql.execute("CREATE TABLE t(id PRIMARY KEY)")
-- create before update trigger
box.sql.execute("CREATE TRIGGER tt_bu BEFORE UPDATE ON t BEGIN SELECT 1; END")
-- create after update trigger
box.sql.execute("CREATE TRIGGER tt_au AFTER UPDATE ON t BEGIN SELECT 1; END")
-- create before insert trigger
box.sql.execute("CREATE TRIGGER tt_bi BEFORE INSERT ON t BEGIN SELECT 1; END")
-- create after insert trigger
box.sql.execute("CREATE TRIGGER tt_ai AFTER INSERT ON t BEGIN SELECT 1; END")
-- create before delete trigger
box.sql.execute("CREATE TRIGGER tt_bd BEFORE DELETE ON t BEGIN SELECT 1; END")
-- create after delete trigger
box.sql.execute("CREATE TRIGGER tt_ad AFTER DELETE ON t BEGIN SELECT 1; END")
-- check that this triggers exist
box.sql.execute("SELECT * FROM _trigger")
-- drop table
box.sql.execute("DROP TABLE t IF EXISTS")
-- check that triggers were dropped with deleted table
box.sql.execute("SELECT * FROM _trigger")
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment