mirror of
https://github.com/MariaDB/server.git
synced 2025-01-30 18:41:56 +01:00
17a87d6063
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.
113 lines
4.6 KiB
C
113 lines
4.6 KiB
C
#ifndef MYSYS_MY_HANDLER_ERRORS_INCLUDED
|
|
#define MYSYS_MY_HANDLER_ERRORS_INCLUDED
|
|
|
|
/* Copyright (c) 2008, 2013, Oracle and/or its affiliates.
|
|
Copyright (c) 2011, 2013, SkySQL Ab.
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; version 2 of the License.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software Foundation,
|
|
Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
|
|
|
|
/*
|
|
Errors a handler can give you
|
|
*/
|
|
|
|
static const char *handler_error_messages[]=
|
|
{
|
|
/* 120 */
|
|
"Didn't find key on read or update",
|
|
"Duplicate key on write or update",
|
|
"Internal (unspecified) error in handler",
|
|
"Someone has changed the row since it was read (while the table was locked to prevent it)",
|
|
"Wrong index given to function",
|
|
"Undefined handler error 125",
|
|
"Index is corrupted",
|
|
"Table file is corrupted",
|
|
"Out of memory in engine",
|
|
"Undefined handler error 129",
|
|
/* 130 */
|
|
"Incorrect file format",
|
|
"Command not supported by database",
|
|
"Old database file",
|
|
"No record read before update",
|
|
"Record was already deleted (or record file crashed)",
|
|
"No more room in record file",
|
|
"No more room in index file",
|
|
"No more records (read after end of file)",
|
|
"Unsupported extension used for table",
|
|
"Too big row",
|
|
/* 140 */
|
|
"Wrong create options",
|
|
"Duplicate unique key or constraint on write or update",
|
|
"Unknown character set used in table",
|
|
"Conflicting table definitions in sub-tables of MERGE table",
|
|
"Table is crashed and last repair failed",
|
|
"Table was marked as crashed and should be repaired",
|
|
"Lock timed out; Retry transaction",
|
|
"Lock table is full; Restart program with a larger lock table",
|
|
"Updates are not allowed under a read only transactions",
|
|
"Lock deadlock; Retry transaction",
|
|
/* 150 */
|
|
"Foreign key constraint is incorrectly formed",
|
|
"Cannot add a child row",
|
|
"Cannot delete a parent row",
|
|
"No savepoint with that name",
|
|
"Non unique key block size",
|
|
"The table does not exist in engine",
|
|
"The table already existed in storage engine",
|
|
"Could not connect to storage engine",
|
|
"Unexpected null pointer found when using spatial index",
|
|
"The table changed in storage engine",
|
|
/* 160 */
|
|
"There's no partition in table for the given value",
|
|
"Row-based binary logging of row failed",
|
|
"Index needed in foreign key constraint",
|
|
"Upholding foreign key constraints would lead to a duplicate key error in some other table",
|
|
"Table needs to be upgraded before it can be used",
|
|
"Table is read only",
|
|
"Failed to get next auto increment value",
|
|
"Failed to set row auto increment value",
|
|
"Unknown (generic) error from engine",
|
|
"Record was not update. Original values was same as new values",
|
|
/* 170 */
|
|
"It is not possible to log this statement",
|
|
"The event was corrupt, leading to illegal data being read",
|
|
"The table is of a new format not supported by this version",
|
|
"The event could not be processed. No other handler error happened",
|
|
"Got a fatal error during initialization of handler",
|
|
"File too short; Expected more data in file",
|
|
"Read page with wrong checksum",
|
|
"Too many active concurrent transactions",
|
|
"Record not matching the given partition set",
|
|
"Index column length exceeds limit",
|
|
/* 180 */
|
|
"Index corrupted",
|
|
"Undo record too big",
|
|
"Invalid InnoDB FTS Doc ID",
|
|
"Table is being used in foreign key check",
|
|
"Tablespace already exists",
|
|
"Too many columns",
|
|
"Row in wrong partition",
|
|
"Row is not visible by the current transaction",
|
|
"Operation was interrupted by end user (probably kill command?)",
|
|
"Disk full",
|
|
/* 190 */
|
|
"Incompatible key or row definition between the MariaDB .frm file and the information in the storage engine. You have to dump and restore the table to fix this",
|
|
"Too many words in a FTS phrase or proximity search",
|
|
"Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.",
|
|
"Foreign key cascade delete/update exceeds max depth",
|
|
"Tablespace is missing for table",
|
|
"Sequence has been run out",
|
|
"Sequence values are conflicting"
|
|
};
|
|
|
|
#endif /* MYSYS_MY_HANDLER_ERRORS_INCLUDED */
|