mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
MDEV-10139 Support for SEQUENCE objects
Working features: CREATE OR REPLACE [TEMPORARY] SEQUENCE [IF NOT EXISTS] name [ INCREMENT [ BY | = ] increment ] [ MINVALUE [=] minvalue | NO MINVALUE ] [ MAXVALUE [=] maxvalue | NO MAXVALUE ] [ START [ WITH | = ] start ] [ CACHE [=] cache ] [ [ NO ] CYCLE ] ENGINE=xxx COMMENT=".." SELECT NEXT VALUE FOR sequence_name; SELECT NEXTVAL(sequence_name); SELECT PREVIOUS VALUE FOR sequence_name; SELECT LASTVAL(sequence_name); SHOW CREATE SEQUENCE sequence_name; SHOW CREATE TABLE sequence_name; CREATE TABLE sequence-structure ... SEQUENCE=1 ALTER TABLE sequence RENAME TO sequence2; RENAME TABLE sequence TO sequence2; DROP [TEMPORARY] SEQUENCE [IF EXISTS] sequence_names Missing features - SETVAL(value,sequence_name), to be used with replication. - Check replication, including checking that sequence tables are marked not transactional. - Check that a commit happens for NEXT VALUE that changes table data (may already work) - ALTER SEQUENCE. ANSI SQL version of setval. - Share identical sequence entries to not add things twice to table list. - testing insert/delete/update/truncate/load data - Run and fix Alibaba sequence tests (part of mysql-test/suite/sql_sequence) - Write documentation for NEXT VALUE / PREVIOUS_VALUE - NEXTVAL in DEFAULT - Ensure that NEXTVAL in DEFAULT uses database from base table - Two NEXTVAL for same row should give same answer. - Oracle syntax sequence_table.nextval, without any FOR or FROM. - Sequence tables are treated as 'not read constant tables' by SELECT; Would be better if we would have a separate list for sequence tables so that select doesn't know about them, except if refereed to with FROM. Other things done: - Improved output for safemalloc backtrack - frm_type_enum changed to Table_type - Removed lex->is_view and replaced with lex->table_type. This allows use to more easy check if item is view, sequence or table. - Added table flag HA_CAN_TABLES_WITHOUT_ROLLBACK, needed for handlers that want's to support sequences - Added handler calls: - engine_name(), to simplify getting engine name for partition and sequences - update_first_row(), to be able to do efficient sequence implementations. - Made binlog_log_row() global to be able to call it from ha_sequence.cc - Added handler variable: row_already_logged, to be able to flag that the changed row is already logging to replication log. - Added CF_DB_CHANGE and CF_SCHEMA_CHANGE flags to simplify deny_updates_if_read_only_option() - Added sp_add_cfetch() to avoid new conflicts in sql_yacc.yy - Moved code for add_table_options() out from sql_show.cc::show_create_table() - Added String::append_longlong() and used it in sql_show.cc to simplify code. - Added extra option to dd_frm_type() and ha_table_exists to indicate if the table is a sequence. Needed by DROP SQUENCE to not drop a table.
This commit is contained in:
@@ -85,8 +85,6 @@ DROP TRIGGER trig_2;
|
||||
|
||||
Invoking view view_retval_2 returning value from function func_retval_1 returning value from unsafe UUID() function.
|
||||
CREATE VIEW view_retval_2 AS SELECT func_retval_1();
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave
|
||||
* binlog_format = STATEMENT: expect 1 warnings.
|
||||
INSERT INTO t2 SELECT * FROM view_retval_2;
|
||||
Warnings:
|
||||
@@ -149,8 +147,6 @@ DROP TRIGGER trig_2;
|
||||
|
||||
Invoking view view_sidef_2 invoking function func_sidef_1 invoking unsafe UUID() function.
|
||||
CREATE VIEW view_sidef_2 AS SELECT func_sidef_1();
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave
|
||||
* binlog_format = STATEMENT: expect 1 warnings.
|
||||
INSERT INTO t2 SELECT * FROM view_sidef_2;
|
||||
Warnings:
|
||||
@@ -411,8 +407,6 @@ DROP TRIGGER trig_2;
|
||||
|
||||
Invoking view view_retval_2 returning value from function func_retval_1 returning value from unsafe @@hostname variable.
|
||||
CREATE VIEW view_retval_2 AS SELECT func_retval_1();
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system variable that may have a different value on the slave
|
||||
* binlog_format = STATEMENT: expect 1 warnings.
|
||||
INSERT INTO t2 SELECT * FROM view_retval_2;
|
||||
Warnings:
|
||||
@@ -475,8 +469,6 @@ DROP TRIGGER trig_2;
|
||||
|
||||
Invoking view view_sidef_2 invoking function func_sidef_1 invoking unsafe @@hostname variable.
|
||||
CREATE VIEW view_sidef_2 AS SELECT func_sidef_1();
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system variable that may have a different value on the slave
|
||||
* binlog_format = STATEMENT: expect 1 warnings.
|
||||
INSERT INTO t2 SELECT * FROM view_sidef_2;
|
||||
Warnings:
|
||||
@@ -657,8 +649,6 @@ DROP TRIGGER trig_2;
|
||||
|
||||
Invoking view view_sidef_2 invoking function func_sidef_1 invoking unsafe SELECT...LIMIT statement.
|
||||
CREATE VIEW view_sidef_2 AS SELECT func_sidef_1();
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted
|
||||
* binlog_format = STATEMENT: expect 1 warnings.
|
||||
INSERT INTO t2 SELECT * FROM view_sidef_2;
|
||||
Warnings:
|
||||
@@ -1049,8 +1039,6 @@ DROP TRIGGER trig_2;
|
||||
|
||||
Invoking view view_sidef_2 invoking function func_sidef_1 invoking unsafe update of two autoinc columns.
|
||||
CREATE VIEW view_sidef_2 AS SELECT func_sidef_1();
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly
|
||||
* binlog_format = STATEMENT: expect 1 warnings.
|
||||
INSERT INTO t2 SELECT * FROM view_sidef_2;
|
||||
Warnings:
|
||||
@@ -1245,8 +1233,6 @@ DROP TRIGGER trig_2;
|
||||
|
||||
Invoking view view_retval_2 returning value from function func_retval_1 returning value from unsafe UDF.
|
||||
CREATE VIEW view_retval_2 AS SELECT func_retval_1();
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave
|
||||
* binlog_format = STATEMENT: expect 1 warnings.
|
||||
INSERT INTO t2 SELECT * FROM view_retval_2;
|
||||
Warnings:
|
||||
@@ -1309,8 +1295,6 @@ DROP TRIGGER trig_2;
|
||||
|
||||
Invoking view view_sidef_2 invoking function func_sidef_1 invoking unsafe UDF.
|
||||
CREATE VIEW view_sidef_2 AS SELECT func_sidef_1();
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave
|
||||
* binlog_format = STATEMENT: expect 1 warnings.
|
||||
INSERT INTO t2 SELECT * FROM view_sidef_2;
|
||||
Warnings:
|
||||
@@ -1551,8 +1535,6 @@ DROP TRIGGER trig_2;
|
||||
|
||||
Invoking view view_sidef_2 invoking function func_sidef_1 invoking unsafe use of mysql.general_log.
|
||||
CREATE VIEW view_sidef_2 AS SELECT func_sidef_1();
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves
|
||||
* binlog_format = STATEMENT: expect 1 warnings.
|
||||
INSERT INTO t2 SELECT * FROM view_sidef_2;
|
||||
Warnings:
|
||||
@@ -1823,14 +1805,6 @@ DROP TRIGGER trig_2;
|
||||
|
||||
Invoking view view_sidef_2 invoking function func_sidef_1 invoking statement that is unsafe in many ways.
|
||||
CREATE VIEW view_sidef_2 AS SELECT func_sidef_1();
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses the general log, slow query log, or performance_schema table(s). This is unsafe because system tables may differ on slaves
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it invokes a trigger or a stored function that inserts into an AUTO_INCREMENT column. Inserted values cannot be logged correctly
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a UDF which may not return the same value on the slave
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system variable that may have a different value on the slave
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statements writing to a table with an auto-increment column after selecting from another table are unsafe because the order in which rows are retrieved determines what (if any) rows will be written. This order cannot be predicted and may differ on master and the slave
|
||||
* binlog_format = STATEMENT: expect 7 warnings.
|
||||
INSERT INTO t2 SELECT * FROM view_sidef_2;
|
||||
Warnings:
|
||||
@@ -2099,9 +2073,6 @@ DROP TRIGGER trig_2;
|
||||
|
||||
Invoking view view_sidef_2 invoking function func_sidef_1 invoking statement that is unsafe several times.
|
||||
CREATE VIEW view_sidef_2 AS SELECT func_sidef_1();
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system variable that may have a different value on the slave
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave
|
||||
* binlog_format = STATEMENT: expect 2 warnings.
|
||||
INSERT INTO t2 SELECT * FROM view_sidef_2;
|
||||
Warnings:
|
||||
@@ -2235,9 +2206,6 @@ DROP TRIGGER trig_1;
|
||||
|
||||
Invoking view view_sidef_1 invoking statement that is unsafe several times.
|
||||
CREATE VIEW view_sidef_1 AS SELECT multi_unsafe_func();
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system variable that may have a different value on the slave
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave
|
||||
* binlog_format = STATEMENT: expect 2 warnings.
|
||||
INSERT INTO t1 SELECT * FROM view_sidef_1;
|
||||
Warnings:
|
||||
@@ -2281,9 +2249,6 @@ DROP TRIGGER trig_2;
|
||||
|
||||
Invoking view view_sidef_2 invoking view view_sidef_1 invoking statement that is unsafe several times.
|
||||
CREATE VIEW view_sidef_2 AS SELECT * FROM view_sidef_1;
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system variable that may have a different value on the slave
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave
|
||||
* binlog_format = STATEMENT: expect 2 warnings.
|
||||
INSERT INTO t2 SELECT * FROM view_sidef_2;
|
||||
Warnings:
|
||||
|
Reference in New Issue
Block a user