Details

    • Task
    • Status: Closed (View Workflow)
    • Major
    • Resolution: Fixed
    • None
    • None
    • None

    Description

      Implement a LevelDB storage engine. Basic feature list:

      • single-statement transactions
      • secondary indexes
      • HANDLER implementation with extensions to support atomic multi-put (kind of like multi-statement transactions)
      • binlog XA on the master to be crash safe
      • crash-proof slave replication state
      • (almost) non blocking schema change
      • full test coverage via mysql-test-run
      • hot backup
      • possible options to have LevelDB instance per mysqld, per schema or per table

      The spec is being worked on here: https://kb.askmonty.org/en/leveldb-storage-engine

      Attachments

        Issue Links

          1.
          Server crashes on creating a table with timestamp column Technical task Closed Sergei Petrunia
          2.
          Assertion `kdef' fails in Primary_key_comparator::Compare on inserting data into a table previously altered and converted into LevelDB Technical task Closed Sergei Petrunia
          3.
          Assertion `slice->size() == table->s->reclength' fails in ha_leveldb::convert_record_from_storage_format(le veldb::Slice*) on accessing a table after ALTER Technical task Closed Sergei Petrunia
          4.
          Server crashes on running DISCARD TABLESPACE on a LevelDB table Technical task Closed Sergei Petrunia
          5.
          Assertion `tablename[0] == '.' && tablename[1] == '/'' fails in ha_leveldb::delete_table(const char*) on creating a TEMPORARY LevelDB table Technical task Closed Sergei Petrunia
          6.
          SELECT with ORDER BY causes "ERROR 1030 (HY000): Got error 122 from storage engine" Technical task Closed Sergei Petrunia
          7.
          JOIN or WHERE conditions involving keys on LevelDB tables don't work Technical task Closed Sergei Petrunia
          8.
          Assertion `!pk_descr' fails in ha_leveldb::open on adding partitions to a partitioned LevelDB table Technical task Closed Sergei Petrunia
          9.
          [recreate] Server hangs or assertion `slice->size() == table->s->reclength' fails on a table created instead of a dropped one Technical task Closed Sergei Petrunia
          10.
          [recreate?] Assorted server crashes on a scenario involving creating and populating a LevelDB table Technical task Closed Sergei Petrunia
          11.
          [recreate] Server hangs on creating sort index in a re-created LevelDB table Technical task Closed Sergei Petrunia
          12.
          UPDATE produces a wrong result while modifying a PK on a LevelDB table Technical task Closed Sergei Petrunia
          13.
          Queries where execution plans on LevelDB don't use PK while on MyISAM they do Technical task Closed Sergei Petrunia
          14.
          A set of assorted crashes on inserting a row into a LevelDB table (does not involve drop table) Technical task Closed Sergei Petrunia
          15.
          Session value of leveldb_lock_wait_timeout is ignored Technical task Closed Sergei Petrunia
          16.
          LevelDB: SELECT produces different results inside a transaction (read is not repeatable) Technical task Closed Sergei Petrunia
          17.
          LevelDB: INSERT .. ON DUPLICATE KEY UPDATE does not work, produces ER_DUP_KEY Technical task Closed Sergei Petrunia
          18.
          LevelDB: REPLACE doesn't work, produces ER_DUP_KEY Technical task Closed Sergei Petrunia
          19.
          LevelDB: SELECT ... FOR UPDATE does not work for gaps Technical task Closed Sergei Petrunia
          20.
          LevelDB: SELECT .. FOR UPDATE locks a row outside of transaction and prevents UPDATE from the same connection Technical task Closed Sergei Petrunia
          21.
          Server crashes in Primary_key_comparator::get_hashnr on INSERT into a LevelDB table with varbinary PK Technical task Closed Sergei Petrunia
          22.
          LevelDB (Feature request): Produce ER_DUP_ENTRY instead of ER_DUP_KEY Technical task Closed Sergei Petrunia
          23.
          LevelDB: UPDATE or DELETE with ORDER BY locks itself and ends with ER_LOCK_WAIT_TIMEOUT Technical task Closed Sergei Petrunia
          24.
          LevelDB: Multi-table DELETE locks itself and ends with ER_LOCK_WAIT_TIMEOUT Technical task Closed Sergei Petrunia
          25.
          LevelDB: Assertion `0' fails in Protocol::end_statement() on multi-table INSERT IGNORE Technical task Closed Sergei Petrunia
          26.
          LevelDB (Feature request): Add --leveldb option to enable/disable the engine Technical task Closed Sergei Petrunia
          27.
          LevelDB: DELETE hangs in state System lock on concurrent DELETE / INSERT flow Technical task Closed Sergei Petrunia
          28.
          LevelDB: Reading by PK prefix does not work (fails with "Table storage engine doesn't have this option") Technical task Closed Sergei Petrunia
          29.
          LevelDB: UPDATE/DELETE by a multi-part PK does not work (fails with "Table storage engine doesn't have this option") Technical task Closed Sergei Petrunia
          30.
          LevelDB: query waiting for a lock cannot be killed until query timeout exceeded Technical task Closed Sergei Petrunia
          31.
          LevelDB: Assertion `! trx->batch' fails in Ldb_transaction* get_or_create_trx(THD*) on SELECT after rolling back a transaction which didn't make changes Technical task Closed Sergei Petrunia
          32.
          LevelDB: Changes from an interrupted query are still applied Technical task Closed Sergei Petrunia
          33.
          LevelDB works incorrectly with query cache Technical task Closed Sergei Petrunia
          34.
          LevelDB: ER_KEY_NOT_FOUND (Can't find record) Technical task Closed Sergei Petrunia
          35.
          LevelDB: Assertion `0' fails in ha_leveldb::index_read_map on range select with ORDER BY .. DESC Technical task Closed Sergei Petrunia
          36.
          LevelDB: Wrong result (duplicate row) on select with range access by primary key Technical task Closed Sergei Petrunia
          37.
          Wrong result (missing rows) on select with secondary keys and index_merge Technical task Closed Sergei Petrunia
          38.
          LevelDB throws error 122 on an attempt to create a table with unique index Technical task Closed Sergei Petrunia
          39.
          LevelDB: Wrong result on IN subquery with index lookup Technical task Closed Sergei Petrunia
          40.
          LevelDB: Wrong result on range condition and aggregate function with two keys on a field Technical task Closed Sergei Petrunia
          41.
          LevelDB does not allow a query with multi-part pk and index and ORDER BY .. DEC Technical task Closed Sergei Petrunia
          42.
          LevelDB: Extensive memory usage on relatively small tables, valgrind warnings "blocks are definitely lost" Technical task Closed Sergei Petrunia
          43.
          LevelDB: Wrong result (duplicate rows) on range access with secondary key and ORDER BY DESC Technical task Closed Sergei Petrunia
          44.
          LevelDB: Assertion `in_table(pa, a_len)' fails in LDBSE_KEYDEF::cmp_full_keys with a multi-part key and ORDER BY .. DESC Technical task Closed Sergei Petrunia
          45.
          LevelDB: IN subquery by secondary key with NULL among values returns true instead of NULL Technical task Closed Sergei Petrunia
          46.
          LevelDB: Wrong result on SELECT and ER_KEY_NOT_FOUND on DELETE with search by NULL-able secondary key after updating PK Technical task Closed Sergei Petrunia
          47.
          LevelDB: indexes on text/blob fields are not allowed Technical task Closed Sergei Petrunia
          48.
          LevelDB: Wrong results with index and range access after INSERT IGNORE or REPLACE Technical task Closed Sergei Petrunia
          49.
          LevelDB: Autoincrement is not increased on inserting an explicit value Technical task Closed Sergei Petrunia
          50.
          LevelDB (Feature request): Improve output of SHOW TABLE STATUS Technical task Closed Sergei Petrunia
          51.
          LevelDB: Assertion `pb_end - pb >= LDBSE_KEYDEF::INDEX_NUMBER_SIZE' fails in Primary_key_comparator::Compare Technical task Closed Sergei Petrunia

          Activity

            Hi,Sergei
            Yes,i am sure i need LevelDB storage engine.Because my lab developed a new database flashkv on the basis of leveldb ,now i want to load flashkv into mysql as a storage engine. Since the upper layer of leveldb and flashkv is the same ,flashkv can be directly introduced if there is the interface of leveldb.So i am sure i need Leveldb Storage engine.Hope you could help me.Thanks,looking forward to your reply.

            Vessel zhan mu qiao added a comment - Hi,Sergei Yes,i am sure i need LevelDB storage engine.Because my lab developed a new database flashkv on the basis of leveldb ,now i want to load flashkv into mysql as a storage engine. Since the upper layer of leveldb and flashkv is the same ,flashkv can be directly introduced if there is the interface of leveldb.So i am sure i need Leveldb Storage engine.Hope you could help me.Thanks,looking forward to your reply.

            Ok, I hope I'm not mixing anything up, The latest tree that I can find with LevelDB code is this one: https://code.launchpad.net/~maria-captains/maria/mysql-5.6-leveldb

            psergei Sergei Petrunia added a comment - Ok, I hope I'm not mixing anything up, The latest tree that I can find with LevelDB code is this one: https://code.launchpad.net/~maria-captains/maria/mysql-5.6-leveldb

            Vessel,

            Please keep in mind that MariaDB doesn't support this engine, branch or code to any level, there will be no bugfixes, development, consultation or guidance in regard to it.

            elenst Elena Stepanova added a comment - Vessel , Please keep in mind that MariaDB doesn't support this engine, branch or code to any level, there will be no bugfixes, development, consultation or guidance in regard to it.

            Hi Sergei
            Thank you,You've been a big help

            Vessel zhan mu qiao added a comment - Hi Sergei Thank you,You've been a big help

            Hi Elena
            Okay,thanks for your reply.

            Vessel zhan mu qiao added a comment - Hi Elena Okay,thanks for your reply.

            People

              psergei Sergei Petrunia
              psergei Sergei Petrunia
              Votes:
              0 Vote for this issue
              Watchers:
              8 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.