1. 07 Apr, 2017 6 commits
    • Monty's avatar
      MDEV-10139 Support for SEQUENCE objects · 17a87d60
      Monty authored
      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.
      17a87d60
    • Monty's avatar
      MDEV-8203 Assert in Query_log_event::do_apply_event() · 546e7aa9
      Monty authored
      This happens because the master writes a table_map event to the binary log, but no row event.
      The slave has a check that there should always be a row event if there was a table_map event, which
      causes a crash.
      
      Fixed by remembering in the cache what kind of events are logged
      and ignore cached statements which is just a table map event.
      546e7aa9
    • Alexander Barkov's avatar
    • Alexander Barkov's avatar
      MDEV-12457 Cursors with parameters · 113a980f
      Alexander Barkov authored
      113a980f
    • Alexander Barkov's avatar
      Using the -t command line to bison instead of %name-prefix · 75d1962a
      Alexander Barkov authored
      Needed to compile on machines with older bison versions.
      Adding a new parameter "name_prefix" to RUN_BISON() cmake macro.
      75d1962a
    • Alexander Barkov's avatar
  2. 05 Apr, 2017 34 commits