You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
proxysql/test/tap/tests/tokenizer_payloads/regular_tokenizer_digests.h...

936 lines
46 KiB

[
// NOTE: KnownIssue - 10
{
"q": [
// Comments: /* */
"select /* COMMENT */ 1",
"select/* COMMENT */ 1",
"select/* COMMENT */1",
"/* COMMENT */select 1",
"/* COMMENT */ select 1 ",
"select 1/* COMMENT */ ",
"select 1 /* COMMENT */ ",
// Comments: initial '#'
"# random_comment \n select 1.1",
"#random_comment \nselect 1.1",
"#random_comment\nselect 1.1",
// Comments: initial '--'
"-- random_comment \n select 1.1",
" -- random_comment\nselect 1.1",
// Comments: final/initial '#|--'
"# random_comment\n select 1.1 #final_comment\n ",
// NOTE: KnownIssue - 1
"# random_comment\n select 1.1# final_comment \n",
"# random_comment\n select 1.1 #final_comment \n ",
"-- random_comment\n select 1.1 -- final_comment\n ",
"-- random_comment\n select 1.1-- final_comment \n",
"-- random_comment\n select 1.1 -- final_comment \n "
],
"s1": "select ?",
"s2": "select ?",
"s3": "select ?",
"s4": "select ?"
},
// Final spaces and ending query delimiters (';')
{
"q": [
" /* comment */SELECT * FROM test.select_for_update_foo FOR UPDATE ;",
"/* comment */ SELECT * FROM test.select_for_update_foo FOR UPDATE; ",
"SELECT * FROM test.select_for_update_foo FOR UPDATE ; /* comment */",
"-- random_comment\n SELECT * FROM test.select_for_update_foo FOR UPDATE; -- final_comment\n "
],
"s1": "SELECT * FROM test.select_for_update_foo FOR UPDATE",
"s2": "SELECT * FROM test.select_for_update_foo FOR UPDATE",
"s3": "SELECT * FROM test.select_for_update_foo FOR UPDATE",
"s4": "SELECT * FROM test.select_for_update_foo FOR UPDATE"
},
// Final spaces and ending and middle query delimiters (';'). Just one space preserved before and after (';').
{
"q": [
" /* comment */SELECT * FROM test.select_for_update_foo FOR UPDATE ; SELECT 1 ;",
"/* comment */ SELECT * FROM test.select_for_update_foo FOR UPDATE ; SELECT 1; ",
"SELECT * FROM test.select_for_update_foo FOR UPDATE ; /* comment */ SELECT 1 ;",
"-- random_comment\n SELECT * FROM test.select_for_update_foo FOR UPDATE ; -- final_comment\n SELECT 1; -- final_comment\n "
],
"s1": "SELECT * FROM test.select_for_update_foo FOR UPDATE ; SELECT ?",
"s2": "SELECT * FROM test.select_for_update_foo FOR UPDATE ; SELECT ?",
"s3": "SELECT * FROM test.select_for_update_foo FOR UPDATE ; SELECT ?",
"s4": "SELECT * FROM test.select_for_update_foo FOR UPDATE ; SELECT ?"
},
// Final spaces and ending and middle query delimiters (';'). No extra spaces before (';')
{
"q": [
" /* comment */SELECT * FROM test.select_for_update_foo FOR UPDATE; SELECT 1 ;",
"/* comment */ SELECT * FROM test.select_for_update_foo FOR UPDATE; SELECT 1; ",
"SELECT * FROM test.select_for_update_foo FOR UPDATE; /* comment */ SELECT 1 ;",
"-- random_comment\n SELECT * FROM test.select_for_update_foo FOR UPDATE; -- final_comment\n SELECT 1; -- final_comment\n "
],
"s1": "SELECT * FROM test.select_for_update_foo FOR UPDATE; SELECT ?",
"s2": "SELECT * FROM test.select_for_update_foo FOR UPDATE; SELECT ?",
"s3": "SELECT * FROM test.select_for_update_foo FOR UPDATE; SELECT ?",
"s4": "SELECT * FROM test.select_for_update_foo FOR UPDATE; SELECT ?"
},
// Floats
{
"q": [
"select 1.1",
// Exponentials
"select 99.1929",
"select 1.1e9",
"select 1.1e+9",
"select 1.1e-9",
// NOTE: KnownIssue - 2: Exponentials are case sensitive
"select 1.1E9",
"select 1.1E+9",
"select 1.1E-9",
// hexadecimal
"select 0x100"
],
"s1": "select ?"
},
// Operators
{
"q": "select 1 +1",
"s1": "select ? +?",
"s2": "select ?+?",
"s3": "select ?+?",
"s4": "select ?+?"
},
{
"q": "select 1+ 1",
"s1": "select ?+ ?",
"s2": "select ?+?",
"s3": "select ?+?",
"s4": "select ?+?"
},
{
"q": "select 1- 1",
"s1": "select ?- ?",
"s2": "select ?-?",
"s3": "select ?-?",
"s4": "select ?-?"
},
{
"q": "select 1 -1",
"s1": "select ? -?",
"s2": "select ?-?",
"s3": "select ?-?",
"s4": "select ?-?"
},
{
"q": "select 1* 1",
"s1": "select ?* ?",
"s2": "select ?*?",
"s3": "select ?*?",
"s4": "select ?*?"
},
{
"q": "select 1 *1",
"s1": "select ? *?",
"s2": "select ?*?",
"s3": "select ?*?",
"s4": "select ?*?"
},
{
"q": "select 1/ 1",
"s1": "select ?/ ?",
"s2": "select ?/?",
"s3": "select ?/?",
"s4": "select ?/?"
},
{
"q": "select 1 /1",
"s1": "select ? /?",
"s2": "select ?/?",
"s3": "select ?/?",
"s4": "select ?/?"
},
{
"q": "select 1% 1",
"s1": "select ?% ?",
"s2": "select ?%?",
"s3": "select ?%?",
"s4": "select ?%?"
},
{
"q": "select 1 %1",
"s1": "select ? %?",
"s2": "select ?%?",
"s3": "select ?%?",
"s4": "select ?%?"
},
{
"q": "select NOW()-1",
"s1": "select NOW()-?",
"s2": "select NOW()-?",
"s3": "select NOW()-?",
"s4": "select NOW()-?"
},
{
"q": "select NOW() - 1",
"s1": "select NOW() - ?",
"s2": "select NOW() -?",
"s3": "select NOW() -?",
"s4": "select NOW() -?"
},
// operators and commas
{
"q": "select 1+ 1, 1 -1, 1 * 1 , 1/1 , 100 % 3",
"s1": "select ?+ ?, ? -?, ? * ? , ?/? , ? % ?",
"s2": "select ?+?,?-?,?*?,?/?,?%?",
"s3": "select ?+?,?-?,?*?,?/?,?%?",
"s4": "select ?+?,?-?,?*?,?/?,?%?"
},
{
"q": "select 1+ 1, 1 -1,NOW()+1,1 * 1 , 1/1 , 100 % 3, NOW() - 1",
"s1": "select ?+ ?, ? -?,NOW()+?,? * ? , ?/? , ? % ?, NOW() - ?",
"s2": "select ?+?,?-?,NOW()+?,?*?,?/?,?%?,NOW() -?",
"s3": "select ?+?,?-?,NOW()+?,?*?,?/?,?%?,NOW() -?",
"s4": "select ?+?,?-?,NOW()+?,?*?,?/?,?%?,NOW() -?"
},
{
"q": "SELECT * FROM t t1, t t2 ,t t3,t t4 LIMIT 0",
"s1": "SELECT * FROM t t1, t t2 ,t t3,t t4 LIMIT ?",
"s2": "SELECT * FROM t t1,t t2,t t3,t t4 LIMIT ?",
"s3": "SELECT * FROM t t1,t t2,t t3,t t4 LIMIT ?",
"s4": "SELECT * FROM t t1,t t2,t t3,t t4 LIMIT ?"
},
// mixing operators, commas and literals
{
"q": "select 1+ 1,'1 -1', 1 * 1 , '1/1 ',100 % 3",
"s1": "select ?+ ?,?, ? * ? , ?,? % ?",
"s2": "select ?+?,?,?*?,?,?%?",
"s3": "select ?+?,?,?*?,?,?%?",
"s4": "select ?+?,?,?*?,?,?%?"
},
{
"q": "select 1+ 1 ,'1 -1' ,1 * 1 , '1 ' , 100 % 3",
"s1": "select ?+ ? ,? ,? * ? , ? , ? % ?",
"s2": "select ?+?,?,?*?,?,?%?",
"s3": "select ?+?,?,?*?,?,?%?",
"s4": "select ?+?,?,?*?,?,?%?"
},
{
"q": "select 1 + 1 , '1 - 1' , 1 * 1 , '1 ' , 100 % 3 ",
"s1": "select ? + ? , ? , ? * ? , ? , ? % ?",
"s2": "select ?+?,?,?*?,?,?%?",
"s3": "select ?+?,?,?*?,?,?%?",
"s4": "select ?+?,?,?*?,?,?%?"
},
// NOTE: KnownIssue - 8: Operators not removed when extra space precedes the value
{
"q": "select + 1",
"s1": "select + ?",
"s2": "select ?",
"s3": "select ?",
"s4": "select ?"
},
{
"q": "select + 1, - 2",
"s1": "select + ?, - ?",
"s2": "select ?,?",
"s3": "select ?,?",
"s4": "select ?,?"
},
// strings - simple
{
"q": "select * from t where t = \"foo\"",
"s1": "select * from t where t = ?",
"s2": "select * from t where t = ?",
"s3": "select * from t where t = ?",
"s4": "select * from t where t = ?"
},
{
"q": "select \"1+ 1, 1 -1, 1 * 1 , 1/1 , 100 % 3\"",
"s1": "select ?",
"s2": "select ?",
"s3": "select ?",
"s4": "select ?"
},
{
"q": "SELECT N'string', _utf8'str\\'i\nng'",
"s1": "SELECT N?, _utf8?",
"s2": "SELECT N?,_utf8?",
"s3": "SELECT N?,_utf8?",
"s4": "SELECT N?,_utf8?"
},
{
"q": "create table test.1_null_digests (null_c1 TEXT, c2 TEXT, c3 TEXT)",
"s1": "create table test.1_null_digests (null_c1 TEXT, c2 TEXT, c3 TEXT)",
"s2": "create table test.1_null_digests (null_c1 TEXT,c2 TEXT,c3 TEXT)",
"s3": "create table test.1_null_digests (null_c1 TEXT,c2 TEXT,c3 TEXT)",
"s4": "create table test.1_null_digests (null_c1 TEXT,c2 TEXT,c3 TEXT)",
"dr": "create table test.?_null_digests (null_c? TEXT,c? TEXT,c? TEXT)"
},
{
"q": "select * from 1_value",
"s1": "select * from 1_value",
"s2": "select * from 1_value",
"s3": "select * from 1_value",
"s4": "select * from 1_value",
"dr": "select * from ?_value"
},
// string - preceded by signs - outside parenthesis, not preceded by commas
{
"q": "select -\"1\"",
"s1": "select -?",
"s2": "select ?",
"s3": "select ?",
"s4": "select ?"
},
{
"q": "select +\"1\",'foo'",
"s1": "select +?,?",
"s2": "select ?,?",
"s3": "select ?,?",
"s4": "select ?,?"
},
// string - preceded by signs - inside parenthesis, or preceded by commas
{
"q": "select (-'89')",
"s1": "select (-?)",
"s2": "select (?)",
"s3": "select (?)",
"s4": "select (?)"
},
{
"q": "select 10,-'89'",
"s1": "select ?,-?",
"s2": "select ?,?",
"s3": "select ?,?",
"s4": "select ?,?"
},
{
"q": "select 10, -'89' ",
"s1": "select ?, -?",
"s2": "select ?,?",
"s3": "select ?,?",
"s4": "select ?,?"
},
{
"q": "select '10', -'89' ",
"s1": "select ?, -?",
"s2": "select ?,?",
"s3": "select ?,?",
"s4": "select ?,?"
},
{
"q": "select 10, -'89 ',+'5'",
"s1": "select ?, -?,+?",
"s2": "select ?,?,?",
"s3": "select ?,?,?",
"s4": "select ?,?,?"
},
// string - symbols '''', '\'', '\\\\' are properly compressed
{
"q": [
"select ''''''''",
"select '\\''",
"select '\\\\'",
"select '''\\\\''\\''''",
"select \"\"\"\"\"\"\"\"",
"select \"\\\"\"",
"select \"\\\\\"",
"select \"\"\"\\\\\"\"\\\"\"\"\""
],
"s1": "select ?",
"s2": "select ?",
"s3": "select ?",
"s3": "select ?"
},
{
"q": [
"select '', '\\'', 'foo''bar\\'', '\\\\str_\\'foo'''",
"select \"\", \"\\\"\", \"foo\"\"bar\\\"\", \"\\\\str_\\\"foo\"\"\""
],
"s1": "select ?, ?, ?, ?",
"s2": "select ?,?,?,?",
"s3": "select ?,?,?,?",
"s3": "select ?,?,?,?"
},
// NOTE: KnownIssue - 7: Spaces not removed after parenthesis when literal strings are preceded by '+|-'
{
"q": "select CONCAT( -'89'+'10')",
"s1": "select CONCAT( -?+?)",
// ^ preserved space
"s2": "select CONCAT(?+?)",
"s3": "select CONCAT(?+?)",
"s4": "select CONCAT(?+?)"
},
{
"q": "select CONCAT( -'89'+'10')",
"s1": "select CONCAT( -?+?)",
"s2": "select CONCAT(?+?)",
"s3": "select CONCAT(?+?)",
"s4": "select CONCAT(?+?)"
},
{
"q": "select CONCAT( -'89' + '10' )",
"s1": "select CONCAT( -? + ? )",
"s2": "select CONCAT(?+?)",
"s3": "select CONCAT(?+?)",
"s4": "select CONCAT(?+?)"
},
// NOTE: KnownIssue - 8: Operators not removed when extra space precedes the literal (value)
{
"q" :"select CONCAT(- '89')",
// ^ preserved operator
"s1": "select CONCAT(- ?)",
"s2": "select CONCAT(?)",
"s3": "select CONCAT(?)",
"s4": "select CONCAT(?)"
},
// not modified
{
"q": "select * fromt t",
"s1": "select * fromt t",
"s2": "select * fromt t",
"s3": "select * fromt t",
"s4": "select * fromt t"
},
// NULL values replacement
{
"q": "select NULL",
"s1": "select ?",
"s2": "select ?",
"s3": "select ?",
"s4": "select ?"
},
{
"q": "select nUlL",
"s1": "select ?",
"s2": "select ?",
"s3": "select ?",
"s4": "select ?"
},
{
"q": "SELECT * FROM nulltablenull WHERE null_id IN (NULL ,2,3, 'NULL' ,5,NulL,null,NULL8,9,10)",
"s1": "SELECT * FROM nulltablenull WHERE null_id IN (? ,?,?, ? ,?,?,?,NULL8,?,?)",
"s2": "SELECT * FROM nulltablenull WHERE null_id IN (?,?,?,?,?,?,?,NULL8,?,?)",
"s3": "SELECT * FROM nulltablenull WHERE null_id IN (?,?,?,...,NULL8,?,?)",
"s4": "SELECT * FROM nulltablenull WHERE null_id IN (?,?,?,...,NULL8,?,?)"
},
{
"q": "SELECT * FROM table_NULL WHERE null_id IN (NULL ,2,3, NULL ,5,6,7,NULL8,9,10)",
"s1": "SELECT * FROM table_NULL WHERE null_id IN (? ,?,?, ? ,?,?,?,NULL8,?,?)",
"s2": "SELECT * FROM table_NULL WHERE null_id IN (?,?,?,?,?,?,?,NULL8,?,?)",
"s3": "SELECT * FROM table_NULL WHERE null_id IN (?,?,?,...,NULL8,?,?)",
"s4": "SELECT * FROM table_NULL WHERE null_id IN (?,?,?,...,NULL8,?,?)"
},
{
"q": "create table test.null_digests_2 (null_c1 TEXT, c2 TEXT, c3 TEXT)",
"s1": "create table test.null_digests_2 (null_c1 TEXT, c2 TEXT, c3 TEXT)",
"s2": "create table test.null_digests_2 (null_c1 TEXT,c2 TEXT,c3 TEXT)",
"s3": "create table test.null_digests_2 (null_c1 TEXT,c2 TEXT,c3 TEXT)",
"s4": "create table test.null_digests_2 (null_c1 TEXT,c2 TEXT,c3 TEXT)"
},
// SimpleGroping: Query digest reduction
{
"q": "SELECT * FROM tablename WHERE id IN (1,2,3,4)",
"s1": "SELECT * FROM tablename WHERE id IN (?,?,?,?)",
"s2": "SELECT * FROM tablename WHERE id IN (?,?,?,?)",
"s3": "SELECT * FROM tablename WHERE id IN (?,?,?,?)",
"s4": "SELECT * FROM tablename WHERE id IN (?,?,?,?)"
},
{
"q": "SELECT * FROM tablename WHERE id IN (1,2,3,4,5,6,7,8,9,10)",
"s1": "SELECT * FROM tablename WHERE id IN (?,?,?,?,?,?,?,?,?,?)",
"s3": "SELECT * FROM tablename WHERE id IN (?,?,?,...)",
"s4": "SELECT * FROM tablename WHERE id IN (?,?,?,...)"
},
// SimpleGroping: Invalid query grouping
{
"q": "SELECT * tablename where id IN (1,2,3,4,5,6,7,8, AND j in (1,2,3,4,5,6 and k=1",
"s1": "SELECT * tablename where id IN (?,?,?,?,?,?,?,?, AND j in (?,?,?,?,?,? and k=?",
"s2": "SELECT * tablename where id IN (?,?,?,?,?,?,?,?,AND j in (?,?,?,?,?,? and k=?",
"s3": "SELECT * tablename where id IN (?,?,?,...,AND j in (?,?,?,...,? and k=?",
"s4": "SELECT * tablename where id IN (?,?,?,...,AND j in (?,?,?,...,? and k=?"
// ^ due to pattern breaking, symbol isn't collapsed
},
// SimpleGroping: Insert queries with mixed spacing
{
"q": "INSERT INTO db.table(col1) VALUES ('val')",
"s1": "INSERT INTO db.table(col1) VALUES (?)",
"s2": "INSERT INTO db.table(col1) VALUES (?)",
"s3": "INSERT INTO db.table(col1) VALUES (?)",
"s4": "INSERT INTO db.table(col1) VALUES (?)"
},
{
"q": "INSERT INTO db.table (col1) VALUES ('val')",
"s1": "INSERT INTO db.table (col1) VALUES (?)",
"s2": "INSERT INTO db.table (col1) VALUES (?)",
"s3": "INSERT INTO db.table (col1) VALUES (?)",
"s4": "INSERT INTO db.table (col1) VALUES (?)"
},
{
"q": "INSERT INTO db.table( col1) VALUES ( 'val' )",
"s1": "INSERT INTO db.table( col1) VALUES ( ? )",
"s2": "INSERT INTO db.table(col1) VALUES (?)",
"s3": "INSERT INTO db.table(col1) VALUES (?)",
"s4": "INSERT INTO db.table(col1) VALUES (?)"
},
{
"q": "INSERT INTO db.table( col1) VALUES ( 'val' )",
"s1": "INSERT INTO db.table( col1) VALUES ( ? )",
"s2": "INSERT INTO db.table(col1) VALUES (?)",
"s3": "INSERT INTO db.table(col1) VALUES (?)",
"s4": "INSERT INTO db.table(col1) VALUES (?)"
},
{
"q": "INSERT INTO db.table ( col1 ) VALUES ( 'val' )",
"s1": "INSERT INTO db.table ( col1 ) VALUES ( ? )",
"s2": "INSERT INTO db.table (col1) VALUES (?)",
"s3": "INSERT INTO db.table (col1) VALUES (?)",
"s4": "INSERT INTO db.table (col1) VALUES (?)"
},
{
"q": "INSERT INTO db.table (col1, col2,col3,col4) VALUES ('val',2,3,'foo')",
"s1": "INSERT INTO db.table (col1, col2,col3,col4) VALUES (?,?,?,?)",
"s2": "INSERT INTO db.table (col1,col2,col3,col4) VALUES (?,?,?,?)",
"s3": "INSERT INTO db.table (col1,col2,col3,col4) VALUES (?,?,?,?)",
"s4": "INSERT INTO db.table (col1,col2,col3,col4) VALUES (?,?,?,?)"
},
{
"q": "INSERT INTO db.table ( col1, col2,col3,col4 ) VALUES ('val',2,3,'foo')",
"s1": "INSERT INTO db.table ( col1, col2,col3,col4 ) VALUES (?,?,?,?)",
"s2": "INSERT INTO db.table (col1,col2,col3,col4) VALUES (?,?,?,?)",
"s3": "INSERT INTO db.table (col1,col2,col3,col4) VALUES (?,?,?,?)",
"s4": "INSERT INTO db.table (col1,col2,col3,col4) VALUES (?,?,?,?)"
},
{
"q": "INSERT INTO db.table_25 (col1, col2,col3,col4) VALUES ('val',2,3,'foo')",
"s1": "INSERT INTO db.table_25 (col1, col2,col3,col4) VALUES (?,?,?,?)",
"s2": "INSERT INTO db.table_25 (col1,col2,col3,col4) VALUES (?,?,?,?)",
"dr": "INSERT INTO db.table_? (col?,col?,col?,col?) VALUES (?,?,?,?)",
"s3": "INSERT INTO db.table_25 (col1,col2,col3,col4) VALUES (?,?,?,?)",
"s4": "INSERT INTO db.table_25 (col1,col2,col3,col4) VALUES (?,?,?,?)"
},
{
"q": "INSERT INTO db.table1_25 ( col_121,col2121 ,col12_3, col41203_ ) VALUES ( 'val', -2, 3, 'foo' )",
"s1": "INSERT INTO db.table1_25 ( col_121,col2121 ,col12_3, col41203_ ) VALUES ( ?, -?, ?, ? )",
"s2": "INSERT INTO db.table1_25 (col_121,col2121,col12_3,col41203_) VALUES (?,?,?,?)",
"dr": "INSERT INTO db.table?_? (col_?,col?,col?_?,col?_) VALUES (?,?,?,?)",
"s3": "INSERT INTO db.table1_25 (col_121,col2121,col12_3,col41203_) VALUES (?,?,?,?)",
"s4": "INSERT INTO db.table1_25 (col_121,col2121,col12_3,col41203_) VALUES (?,?,?,?)"
},
// SimpleGrouping: Insert queries with operators breaking grouping sequence
{
"q": "INSERT INTO db.table ( col1, col2,col3,col4, col5 ) VALUES ('val',2,3,'foo', 5 + 10, 6 - 9)",
"s1": "INSERT INTO db.table ( col1, col2,col3,col4, col5 ) VALUES (?,?,?,?, ? + ?, ? - ?)",
"s2": "INSERT INTO db.table (col1,col2,col3,col4,col5) VALUES (?,?,?,?,?+?,?-?)",
"dr": "INSERT INTO db.table (col?,col?,col?,col?,col?) VALUES (?,?,?,?,?+?,?-?)",
"s3": "INSERT INTO db.table (col1,col2,col3,col4,col5) VALUES (?,?,?,?,?+?,?-?)",
"s4": "INSERT INTO db.table (col1,col2,col3,col4,col5) VALUES (?,?,?,?,?+?,?-?)"
// ^ not collapsed due to pattern breaking
},
{
"q": "INSERT INTO db.table ( col1, col2,col3,col4, col5 ) VALUES ('val',1, 2,3,'foo', 5 + 10, 6 - 9)",
"s1": "INSERT INTO db.table ( col1, col2,col3,col4, col5 ) VALUES (?,?, ?,?,?, ? + ?, ? - ?)",
"s2": "INSERT INTO db.table (col1,col2,col3,col4,col5) VALUES (?,?,?,?,?,?+?,?-?)",
"s3": "INSERT INTO db.table (col1,col2,col3,col4,col5) VALUES (?,?,?,...,?+?,?-?)",
"s4": "INSERT INTO db.table (col1,col2,col3,col4,col5) VALUES (?,?,?,...,?+?,?-?)"
// ^ not collapsed due to pattern breaking
},
{
"q": "INSERT INTO db.table ( col1, col2,col3,col4, col5 ) VALUES ('val',1, 2,3,'foo', 5 + 10, 6 - 9, 12, 3, 4, 5, 4,5,6)",
"s1": "INSERT INTO db.table ( col1, col2,col3,col4, col5 ) VALUES (?,?, ?,?,?, ? + ?, ? - ?, ?, ?, ?, ?, ?,?,?)",
"s2": "INSERT INTO db.table (col1,col2,col3,col4,col5) VALUES (?,?,?,?,?,?+?,?-?,?,?,?,?,?,?,?)",
"s3": "INSERT INTO db.table (col1,col2,col3,col4,col5) VALUES (?,?,?,...,?+?,?-?,?,?,?,...)",
"dr": "INSERT INTO db.table (col?,col?,col?,col?,col?) VALUES (?,?,?,...,?+?,?-?,?,?,?,...)"
// ^ not collapsed due to pattern breaking
},
{
"q": "INSERT INTO db.table ( col1, col2,col3,col4, col5 ) VALUES ('val',1, 2,3,'foo'), ('val2', 2,3,4,'foo2')",
"s1": "INSERT INTO db.table ( col1, col2,col3,col4, col5 ) VALUES (?,?, ?,?,?), (?, ?,?,?,?)",
"s2": "INSERT INTO db.table (col1,col2,col3,col4,col5) VALUES (?,?,?,?,?),(?,?,?,?,?)",
"s3": "INSERT INTO db.table (col1,col2,col3,col4,col5) VALUES (?,?,?,...),(?,?,?,...)",
"s4": "INSERT INTO db.table (col1,col2,col3,col4,col5) VALUES (?,?,?,...),..."
},
{
"q": [
"INSERT INTO db.table (col1,col2,col3) VALUES (NULL, NULL, NULL, NULL)",
"INSERT INTO db.table (col1,col2,col3) VALUES ('foooo', 'bar', 'fooo')",
"INSERT INTO db.table (col1,col2,col3) VALUES (1.23234, 9.923, 8)"
],
"mz": {
"digest_max_size": 55,
"grouping_limit": 1,
"groups_grouping_limit": 1,
"digest": "INSERT INTO db.table (col1,col2,col3) VALUES (?,...)"
}
},
{
"q": [
"INSERT INTO db.table (col1,col2,col3) VALUES (NULL, NULL, NULL, NULL)"
],
"mz": {
"digest_max_size": 55,
"grouping_limit": 1,
"groups_grouping_limit": 1,
"digest": "INSERT INTO db.table (col1,col2,col3) VALUES (?,...)"
}
},
{
// Testing the compression limits of number parsing when buffer is exceeded.
"q": [
"INSERT INTO db.table (col1,col2,col3) VALUES (1.23234, 9.92381, 8.00)"
],
"mz": [
{
"digest_max_size": 57,
"grouping_limit": 1,
"groups_grouping_limit": 1,
"digest": "INSERT INTO db.table (col1,col2,col3) VALUES (?,...)"
},
{
"digest_max_size": 57,
"grouping_limit": 1,
"groups_grouping_limit": 1,
"digest": "INSERT INTO db.table (col1,col2,col3) VALUES (?,...)"
},
{
"digest_max_size": 56,
"grouping_limit": 1,
"groups_grouping_limit": 1,
"digest": "INSERT INTO db.table (col1,col2,col3) VALUES (?,...)"
},
{
"digest_max_size": 55,
"grouping_limit": 1,
"groups_grouping_limit": 1,
"digest": "INSERT INTO db.table (col1,col2,col3) VALUES (?,?"
},
{
"digest_max_size": 54,
"grouping_limit": 1,
"groups_grouping_limit": 1,
"digest": "INSERT INTO db.table (col1,col2,col3) VALUES (?,?"
},
{
"digest_max_size": 54,
"grouping_limit": 1,
"groups_grouping_limit": 1,
"replace_digits": 1,
"digest": "INSERT INTO db.table (col?,col?,col?) VALUES (?,?"
},
{
"digest_max_size": 53,
"grouping_limit": 1,
"groups_grouping_limit": 1,
"replace_digits": 1,
"digest": "INSERT INTO db.table (col?,col?,col?) VALUES (?"
},
{
"digest_max_size": 47,
"grouping_limit": 1,
"groups_grouping_limit": 1,
"replace_digits": 1,
"digest": "INSERT INTO db.table (col?,col?,col?) VALUES (?"
},
{
"digest_max_size": 46,
"grouping_limit": 1,
"groups_grouping_limit": 1,
"replace_digits": 1,
"digest": "INSERT INTO db.table (col?,col?,col?) VALUES ("
}
]
},
{
// Testing the compression limits of number parsing when buffer is exceeded.
// NOTE: This is an example of a query that requires the '...' comprobation in the
// fourth stage parsing, since it's possible to find results like:
// - (?,...),...(?,...)
// ^ remove any founds patterns like this
// Resulting from stage 3.
"q": [
"INSERT INTO db.table ( col1, col2,col3,col4, col5 ) VALUES ('val',1, 2,3,'foo'), ('val2',3,NULL,4,'foo2'), ('val2', 5,0x0239192,4,'foo2'), ('val2', 7,NULL,4,'foo2')"
],
"mz": [
{
"digest_max_size": 105,
"grouping_limit": 1,
"groups_grouping_limit": 1,
"digest": "INSERT INTO db.table (col1,col2,col3,col4,col5) VALUES (?,...),..."
}
]
},
{
"q": "INSERT INTO db.table (col1,col2,col3) VALUES (1,2,3),(3,5,6),(7,8,9) ON DUPLICATE KEY UPDATE col1 = VALUES(col2)",
"mz": [
{
"digest_max_size": 105,
"grouping_limit": 1,
"groups_grouping_limit": 1,
"digest": "INSERT INTO db.table (col1,col2,col3) VALUES (?,...),... ON DUPLICATE KEY UPDATE col1 = VALUES(col2)"
},
{
"digest_max_size": 99,
"grouping_limit": 1,
"groups_grouping_limit": 1,
"digest": "INSERT INTO db.table (col1,col2,col3) VALUES (?,...),... ON DUPLICATE KEY UPDATE col1 = VALUES(col2"
}
]
},
{
"q": "INSERT INTO db.table (col1,col2,col3) VALUES (1,2,3),(3,5,6),(7,8,9) ON DUPLICATE KEY UPDATE col1 = VALUES(col2)",
"mz": [
{
"digest_max_size": 105,
"grouping_limit": 1,
"groups_grouping_limit": 1,
"digest": "INSERT INTO db.table (col1,col2,col3) VALUES (?,...),... ON DUPLICATE KEY UPDATE col1 = VALUES(col2)"
},
{
"digest_max_size": 99,
"grouping_limit": 1,
"groups_grouping_limit": 1,
"digest": "INSERT INTO db.table (col1,col2,col3) VALUES (?,...),... ON DUPLICATE KEY UPDATE col1 = VALUES(col2"
}
]
},
{
"q": "INSERT INTO db.table (col1,col2,col3) VALUES (?,...),(1.23912939495912302020321, 2.23891282384852012203102301203120320031102, 20340122) ON DUPLICATE KEY UPDATE col1 = VALUES(col2)",
"mz": [
{
"digest_max_size": 100,
"grouping_limit": 1,
"groups_grouping_limit": 1,
"digest": "INSERT INTO db.table (col1,col2,col3) VALUES (?,...),... ON DUPLICATE KEY UPDATE col1 = VALUES(col2)"
},
{
"digest_max_size": 98,
"grouping_limit": 1,
"groups_grouping_limit": 1,
"digest": "INSERT INTO db.table (col1,col2,col3) VALUES (?,...),(?,?"
// ^ expected, no room for parsing the whole digit
}
]
},
{
// Due to the difference in behavior of how numbers vs strings are parsed, it's expected that query is early trimmed
// when there is no more room for parsing, this is not the case of string parsing.
"q": "INSERT INTO db.table (col1,col2,col3) VALUES (?,...),('1.23912939495912302020321', '2.23891282384852012203102301203120320031102', '20340122') ON DUPLICATE KEY UPDATE col1 = VALUES(col2)",
"mz": [
{
"digest_max_size": 100,
"grouping_limit": 1,
"groups_grouping_limit": 1,
"digest": "INSERT INTO db.table (col1,col2,col3) VALUES (?,...),... ON DUPLICATE KEY UPDATE col1 = VALUES(col2)"
},
{
"digest_max_size": 98,
"grouping_limit": 1,
"groups_grouping_limit": 1,
"digest": "INSERT INTO db.table (col1,col2,col3) VALUES (?,...),... ON DUPLICATE KEY UPDATE col1 = VALUES(col"
// expected proper parsing ^ expected: query trimmed ^
}
]
},
{
"q": "INSERT INTO db.table (col1,col2,col3) VALUES (-19, +29,- 29,+ 10,- 20,+ 40,- 34,- 30,+ 40, + 11, - 23,- 40, + 60)",
"mz": [
{
"digest_max_size": 85,
"grouping_limit": 11,
"groups_grouping_limit": 1,
"digest": "INSERT INTO db.table (col1,col2,col3) VALUES (?,?,?,?,?,?,?,?,?,?,?,...)"
}
]
},
{
"q": "INSERT INTO db.table (col1,col2,col3) VALUES (122,222,332,442,551,662,777,888,999,100,111,122,234)",
"mz": [
{
"digest_max_size": 68,
"grouping_limit": 8,
"groups_grouping_limit": 1,
"digest": "INSERT INTO db.table (col1,col2,col3) VALUES (?,?,?,?,?,?,?,?,...,?"
// this sign isn't compressed because there is no more room for parsing ^
// the latest '234' number, so the number compression never completed, but in 'final_stage'
// the digits of the number is never completed, but in 'final_stage' whatever was copied of
// the number is trimmed in a final effort to homogenize the query.
}
]
},
{
"q": "INSERT INTO db.table (col1,col2,col3) VALUES (122,222,332,442,551,662,777,888,999,100,111,122,234)",
"mz": [
{
"digest_max_size": 70,
"grouping_limit": 8,
"groups_grouping_limit": 1,
"digest": "INSERT INTO db.table (col1,col2,col3) VALUES (?,?,?,?,?,?,?,?,...)"
}
]
},
{
"q": "INSERT INTO db.table (col1,col2,col3) VALUES (122,222,332,442,551,662,777,888,999,100,111,122,234)",
"mz": [
{
"digest_max_size": 71,
"grouping_limit": 8,
"groups_grouping_limit": 1,
"digest": "INSERT INTO db.table (col1,col2,col3) VALUES (?,?,?,?,?,?,?,?,...)"
}
]
},
{
"q": [
"SELECT /* keep_comment */ 1",
"SELECT /* keep_comment */ +1",
"SELECT /* keep_comment */ 1.123",
"SELECT /* keep_comment */ 0x100",
"SELECT /* keep_comment */ 1.1E-9",
"SELECT /* keep_comment */ 1.1E+9",
"SELECT /* keep_comment */ 0x100"
],
"mz": [
{
"digest_max_size": 100,
"keep_comment": true,
"digest": "SELECT /* keep_comment */ ?"
}
]
},
{
"q": [
"SELECT /* long_comment 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 */ 1"
],
"mz": [
{
"digest_max_size": 110,
"keep_comment": true,
"digest": "SELECT /* long_comment 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
// Two chars are lost in this case, but it's nothing critical
}
]
},
{
"q": [
"SELECT /* long_comment 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 */ 1"
],
"mz": [
{
// The final digest size is 135, but 137 chars are placing the final '*/' without issues. This is expected as the final position is never used
// for comment copying purposes in the state machine. Thus the '*/' is not copy, but there is room for the number replacement '?'.
"digest_max_size": 135,
"keep_comment": true,
"digest": "SELECT /* long_comment 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 *"
},
{
// The final digest size is 135, but 137 chars are placing the final '*/' without issues. This is expected as the final position is never used
// for comment copying purposes in the state machine. Because of this, just the '*' is copied in this case.
"digest_max_size": 136,
"keep_comment": true,
"digest": "SELECT /* long_comment 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 */"
},
{
// The final digest size is 136, but 137 chars are placing the final '*/' without issues. This is expected as the final position is never used
// for comment copying purposes in the state machine. Thanks to the extra char in the buffer the digest contains the terminator.
"digest_max_size": 137,
"keep_comment": true,
"digest": "SELECT /* long_comment 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 */"
},
{
"digest_max_size": 138,
"keep_comment": true,
"digest": "SELECT /* long_comment 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 */ ?"
}
]
},
{
"q": "create /* foo_comment*/table table_10_utf8_4 (\n`pk` int primary key,\n`col_bigint_undef_signed` bigint ,\n`col_bigint_undef_unsigned` bigint unsigned ,\n`col_bigint_key_signed` bigint ,\n`col_bigint_key_unsigned` bigint unsigned ,\n`col_float_undef_signed` float ,\n`col_float_undef_unsigned` float unsigned ,\n`col_float_key_signed` float ,\n`col_float_key_unsigned` float unsigned ,\n`col_double_undef_signed` double ,\n`col_double_undef_unsigned` double unsigned ,\n`col_double_key_signed` double ,\n`col_double_key_unsigned` double unsigned ,\n`col_decimal(40, 20)_undef_signed` decimal(40, 20) ,\n`col_decimal(40, 20)_undef_unsigned` decimal(40, 20) unsigned ,\n`col_decimal(40, 20)_key_signed` decimal(40, 20) ,\n`col_decimal(40, 20)_key_unsigned` decimal(40, 20) unsigned ,\n`col_char(20)_undef_signed` char(20) ,\n`col_char(20)_key_signed` char(20) ,\n`col_varchar(20)_undef_signed` varchar(20) ,\n`col_varchar(20)_key_signed` varchar(20) ,\n`col_enum_undef_signed` enum('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z') ,\n`col_enum_key_signed` enum('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z') ,\nkey (`col_bigint_key_signed`),\nkey (`col_bigint_key_unsigned`),\nkey (`col_float_key_signed`),\nkey (`col_float_key_unsigned`),\nkey (`col_double_key_signed`),\nkey (`col_double_key_unsigned`),\nkey (`col_decimal(40, 20)_key_signed`),\nkey (`col_decimal(40, 20)_key_unsigned`),\nkey (`col_char(20)_key_signed`),\nkey (`col_varchar(20)_key_signed`),\nkey (`col_enum_key_signed`)\n) character set utf8 \npartition by hash(pk)\npartitions 4",
"mz": [
{
"digest_max_size": 2048,
"grouping_limit": 0,
"groups_grouping_limit": 0,
"digest": "create table table_10_utf8_4 (`pk` int primary key,`col_bigint_undef_signed` bigint,`col_bigint_undef_unsigned` bigint unsigned,`col_bigint_key_signed` bigint,`col_bigint_key_unsigned` bigint unsigned,`col_float_undef_signed` float,`col_float_undef_unsigned` float unsigned,`col_float_key_signed` float,`col_float_key_unsigned` float unsigned,`col_double_undef_signed` double,`col_double_undef_unsigned` double unsigned,`col_double_key_signed` double,`col_double_key_unsigned` double unsigned,`col_decimal(?,?)_undef_signed` decimal(?,?),`col_decimal(?,?)_undef_unsigned` decimal(?,?) unsigned,`col_decimal(?,?)_key_signed` decimal(?,?),`col_decimal(?,?)_key_unsigned` decimal(?,?) unsigned,`col_char(?)_undef_signed` char(?),`col_char(?)_key_signed` char(?),`col_varchar(?)_undef_signed` varchar(?),`col_varchar(?)_key_signed` varchar(?),`col_enum_undef_signed` enum(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?),`col_enum_key_signed` enum(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?),key (`col_bigint_key_signed`),key (`col_bigint_key_unsigned`),key (`col_float_key_signed`),key (`col_float_key_unsigned`),key (`col_double_key_signed`),key (`col_double_key_unsigned`),key (`col_decimal(?,?)_key_signed`),key (`col_decimal(?,?)_key_unsigned`),key (`col_char(?)_key_signed`),key (`col_varchar(?)_key_signed`),key (`col_enum_key_signed`)) character set utf8 partition by hash(pk) partitions ?"
},
{
"digest_max_size": 2048,
"grouping_limit": 1,
"groups_grouping_limit": 1,
"digest": "create table table_10_utf8_4 (`pk` int primary key,`col_bigint_undef_signed` bigint,`col_bigint_undef_unsigned` bigint unsigned,`col_bigint_key_signed` bigint,`col_bigint_key_unsigned` bigint unsigned,`col_float_undef_signed` float,`col_float_undef_unsigned` float unsigned,`col_float_key_signed` float,`col_float_key_unsigned` float unsigned,`col_double_undef_signed` double,`col_double_undef_unsigned` double unsigned,`col_double_key_signed` double,`col_double_key_unsigned` double unsigned,`col_decimal(?,?)_undef_signed` decimal(?,?),`col_decimal(?,?)_undef_unsigned` decimal(?,?) unsigned,`col_decimal(?,?)_key_signed` decimal(?,?),`col_decimal(?,?)_key_unsigned` decimal(?,?) unsigned,`col_char(?)_undef_signed` char(?),`col_char(?)_key_signed` char(?),`col_varchar(?)_undef_signed` varchar(?),`col_varchar(?)_key_signed` varchar(?),`col_enum_undef_signed` enum(?,...),`col_enum_key_signed` enum(?,...),key (`col_bigint_key_signed`),key (`col_bigint_key_unsigned`),key (`col_float_key_signed`),key (`col_float_key_unsigned`),key (`col_double_key_signed`),key (`col_double_key_unsigned`),key (`col_decimal(?,?)_key_signed`),key (`col_decimal(?,?)_key_unsigned`),key (`col_char(?)_key_signed`),key (`col_varchar(?)_key_signed`),key (`col_enum_key_signed`)) character set utf8 partition by hash(pk) partitions ?"
},
{
"digest_max_size": 2048,
"grouping_limit": 1,
"groups_grouping_limit": 1,
"replace_digits": 1,
"digest": "create table table_?_utf?_? (`pk` int primary key,`col_bigint_undef_signed` bigint,`col_bigint_undef_unsigned` bigint unsigned,`col_bigint_key_signed` bigint,`col_bigint_key_unsigned` bigint unsigned,`col_float_undef_signed` float,`col_float_undef_unsigned` float unsigned,`col_float_key_signed` float,`col_float_key_unsigned` float unsigned,`col_double_undef_signed` double,`col_double_undef_unsigned` double unsigned,`col_double_key_signed` double,`col_double_key_unsigned` double unsigned,`col_decimal(?,?)_undef_signed` decimal(?,?),`col_decimal(?,?)_undef_unsigned` decimal(?,?) unsigned,`col_decimal(?,?)_key_signed` decimal(?,?),`col_decimal(?,?)_key_unsigned` decimal(?,?) unsigned,`col_char(?)_undef_signed` char(?),`col_char(?)_key_signed` char(?),`col_varchar(?)_undef_signed` varchar(?),`col_varchar(?)_key_signed` varchar(?),`col_enum_undef_signed` enum(?,...),`col_enum_key_signed` enum(?,...),key (`col_bigint_key_signed`),key (`col_bigint_key_unsigned`),key (`col_float_key_signed`),key (`col_float_key_unsigned`),key (`col_double_key_signed`),key (`col_double_key_unsigned`),key (`col_decimal(?,?)_key_signed`),key (`col_decimal(?,?)_key_unsigned`),key (`col_char(?)_key_signed`),key (`col_varchar(?)_key_signed`),key (`col_enum_key_signed`)) character set utf? partition by hash(pk) partitions ?"
}
]
},
{
"q": "create /* foo_comment*/table table_10_utf8_4 (`pk` int primary key,`col_bigint_undef_signed` bigint ,`col_bigint_undef_unsigned` bigint unsigned ,`col_bigint_key_signed` bigint ,`col_bigint_key_unsigned` bigint unsigned ,`col_float_undef_signed` float ,`col_float_undef_unsigned` float unsigned ,`col_float_key_signed` float ,`col_float_key_unsigned` float unsigned ,`col_double_undef_signed` double ,`col_double_undef_unsigned` double unsigned ,`col_double_key_signed` double ,`col_double_key_unsigned` double unsigned ,`col_decimal(40, 20)_undef_signed` decimal(40, 20) ,`col_decimal(40, 20)_undef_unsigned` decimal(40, 20) unsigned ,`col_decimal(40, 20)_key_signed` decimal(40, 20) ,`col_decimal(40, 20)_key_unsigned` decimal(40, 20) unsigned ,`col_char(20)_undef_signed` char(20) ,`col_char(20)_key_signed` char(20) ,`col_varchar(20)_undef_signed` varchar(20) ,`col_varchar(20)_key_signed` varchar(20) ,`col_enum_undef_signed` enum('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z') ,`col_enum_key_signed` enum('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z') ,key (`col_bigint_key_signed`),key (`col_bigint_key_unsigned`),key (`col_float_key_signed`),key (`col_float_key_unsigned`),key (`col_double_key_signed`),key (`col_double_key_unsigned`),key (`col_decimal(40, 20)_key_signed`),key (`col_decimal(40, 20)_key_unsigned`),key (`col_char(20)_key_signed`),key (`col_varchar(20)_key_signed`),key (`col_enum_key_signed`)) character set utf8 partition by hash(pk) partitions 4",
"mz": [
{
"digest_max_size": 2048,
"grouping_limit": 1,
"groups_grouping_limit": 1,
"replace_digits": 1,
"digest": "create table table_?_utf?_? (`pk` int primary key,`col_bigint_undef_signed` bigint,`col_bigint_undef_unsigned` bigint unsigned,`col_bigint_key_signed` bigint,`col_bigint_key_unsigned` bigint unsigned,`col_float_undef_signed` float,`col_float_undef_unsigned` float unsigned,`col_float_key_signed` float,`col_float_key_unsigned` float unsigned,`col_double_undef_signed` double,`col_double_undef_unsigned` double unsigned,`col_double_key_signed` double,`col_double_key_unsigned` double unsigned,`col_decimal(?,?)_undef_signed` decimal(?,?),`col_decimal(?,?)_undef_unsigned` decimal(?,?) unsigned,`col_decimal(?,?)_key_signed` decimal(?,?),`col_decimal(?,?)_key_unsigned` decimal(?,?) unsigned,`col_char(?)_undef_signed` char(?),`col_char(?)_key_signed` char(?),`col_varchar(?)_undef_signed` varchar(?),`col_varchar(?)_key_signed` varchar(?),`col_enum_undef_signed` enum(?,...),`col_enum_key_signed` enum(?,...),key (`col_bigint_key_signed`),key (`col_bigint_key_unsigned`),key (`col_float_key_signed`),key (`col_float_key_unsigned`),key (`col_double_key_signed`),key (`col_double_key_unsigned`),key (`col_decimal(?,?)_key_signed`),key (`col_decimal(?,?)_key_unsigned`),key (`col_char(?)_key_signed`),key (`col_varchar(?)_key_signed`),key (`col_enum_key_signed`)) character set utf? partition by hash(pk) partitions ?"
}
]
},
{
// digest_corner_cases_1.hjson - Testing the compression limits of number parsing when buffer is exceeded
"q": [
"INSERT INTO db.table (col1,col2,col3) VALUES ( 0x1bb81 , 214957.551736 , NuLL , 13931.135294 , 23747.192325 ,123446.135101 , NULL , \"qishXAQYMGjKECmKDOMPhdcAnCKsIZ\" , 0xdf06 ) , ( 0xeeb2, 61634.403212 ,\"WLrEhMSFQunfdVMBlNTHuTOoJnZWXp\" , 134001 ,0x11691 ,-117247 , null , 185039.893374,0xfffffffffffdec0c ) , ( 63386.842817 ,NUll , NuLL ,'rjEesshgtPbGPhQQPPJdzShBDxgqtX', -70027.364007 , -33812,16088, -55381.721224 , 30937.841446 ) , ( -86381.060501 ,42818 , \"dWQiQvHpsqARowGWJYDfCWFfftJCQF\" , \"usJPVckeqNRKoRbJhZcnjlKWxdRFqx\", 'vmHWbmdhfopTPzKzBktGDHfgAWvTjK' , -144765.876660 ,'zpUGEePzmDcktBrkWvpAjFvIYJLjJk' , nuLL , nulL) , ( Null , -60588.485877,0xfffffffffffef1d8 , 0x186f3 , 'YRTtjWCbHXxqDAjfhqAeyOkflwUkUy' , Null , 30300 , -79082 , -53386.660287 ) , (nuLL, 101067.756480, 'QJqcLLvbdUKvElZnitrCPiBmxttzPR' , 82544.127490, \"pLwcmgkGEruDvPuJbjVWqigQKLtApm\" , NuLl ,\"pHCWIfigWjGHRWGbmrEYboNjNRrVle\" , 273.951202 , 0x1611e) , ( 'xEqRpKSqBETVFlBrmUWDBNvXiWhLAv' ,0x2d71b , -7610.975745 , 49496.141605 , 0x5a3b, 41343, 187409, \"ogsXdRWyoxDtZIIsgbUQIBnHRPVBCr\" , \"OKDhJKxprZcDdKrveMoCipXkyBOWzB\") ,(179771.894977 , 'exEZujUOHgZlQNHbNBmzuqGvfIjSmh' , 110148.494099 , 0x22668,0xbb55 ,'WUAcoNyluxqJGkRXIynFEAzaHGoNUm', 99168 ,98435.675651 , 83750.793947 ), ( -55183.197960 , -209785 ,NULl ,-131058 ,-40439.196182 , 0xfffffffffffeef1e , 'bOWeCuKfVyMAHgcRjonjLlHffKkVUj',-152886 , 74587.327657 ) ON DUPLICATE KEY UPDATE col1 = VALUES(col2)"
],
"mz": [
{
"digest_max_size": 300,
"grouping_limit": 3,
"groups_grouping_limit": 7,
"digest": "INSERT INTO db.table (col1,col2,col3) VALUES (?,?,?,...),(?,?,?,...),(?,?,?,...),(?,?,?,...),(?,?,?,...),(?,?,?,...),(?,?,?,...),... ON DUPLICATE KEY UPDATE col1 = VALUES(col2)"
}
]
},
{
// digest_corner_cases_2.hjson - Testing the compression limits of number parsing when buffer is exceeded
"q": [
"INSERT INTO db.table (col1,col2,col3) VALUES ( -106884.372400, Null, 96967.675019, \"uOkKFcQuotJLSsXHnlrRkMjkOHbnLL\", nUll , 0xfffffffffffe2fa4,-98747,'FHnJDcaJuHYKrcLQjmPRgBPeEMVqHG', 0xfffffffffffe5f92 ) , (-65981.543813 , 0x18a51 , -63726 , -40277 , 'RZLWNxLKntCNvKyywPcuWWDkunJDzi' , 95651.912060 , -120483.104736 , 'zoMQmSNOsvEMwhAupPPxSdjGlpIwUF', -92653 ) ,( 79071.944789 , 29637 ,Null , 0xa3e3 , 69742.506092 , nuLl , nUlL , 32587 , nuLL ),( NUll , 193562 , NuLl,nUll ,51124 ,63407.690405,12880.173141 , -42003.235292 , nULl ) , ( 14465, 0xd769, 35866, -71474 , 238970.003674 , 49471.298925,nULl , 196468.485221, 'OQWWhgSLBQWiPGkidCLtmcJVjccXhT' ) , (15979.107082 , 0xffffffffffffdecb, 'yAsavJoqsYcdRnqzuionGLUcgKzptM' , 52201.974227 , nUll ,0xfffffffffffec75a , 152701.076362, 'vmWBqXdCYmBiZgIkQxPlMKkJzwoIjl' , \"TzKdJzIgwVycdGJjnYiKVhYOVLhuHO\" ) , ( 0x12a , 'wlbxzkxigeNkGceygISXGXHwHpNJfL', \"MjoQpMZYZlelqYyYFQQoXXvgMLxxIB\" ,-14336.956478 ,79770.092506 , 0x8a19, -209691 , -142530, NuLl ) , ( 7107 , 48803.646634 , nuLl ,\"RxqHnGFqRGECSvsXmdfPutRczeoBWM\" , 4707.102185 , -123755.871365 , 0x3803a ,0x892e , 0x7334 ) , ( Null , \"BwQbhYkWShweQqlAgdiJjZVNkghTFt\", 27725.575520 , 0x7363 , 0x21ca2 , null , \"rSBYTyRDrmKCgMEKvLeDeMmGJrEWto\" ,\"mpuVGXNeZsbPgbpKVUREyQBVpbsmLq\" ,0xffffffffffff5b11 ) ON DUPLICATE KEY UPDATE col1 = VALUES(col2)"
],
"mz": [
{
"digest_max_size": 300,
"grouping_limit": 3,
"groups_grouping_limit": 3,
"digest": "INSERT INTO db.table (col1,col2,col3) VALUES (?,?,?,...),(?,?,?,...),(?,?,?,...),... ON DUPLICATE KEY UPDATE col1 = VALUES(col2)"
}
]
},
{
// digest_corner_cases_3.hjson - Testing the compression limits of number parsing when buffer is exceeded
"q": [
"INSERT INTO db.table (col1,col2,col3) VALUES ( 0xfffffffffffdfa31 , 'ytWVaafHnboBDSJHpKDfIlWSWvUNjq' , 16908.503755 , -11736.372712, 0x1e798 , 'UlMwBSOlzzGgmKbjZavKKIgvDTzolx' , 9905.137073 , \"tGVoLiPoDsHOXXtXBqDrzwJHmWdOph\" ), ('XYvotpHOhBUaIKLLCPdeZamzyIQEIX' , 39167.355124 , 52963, 'HcfcZWuJpfTKhleWQNiEkydsyTPzwV' ,17553.074771 , 0xfffffffffffea0e9 , -27669 , 0xfffffffffffed5a4) , ( Null , -28382.553547, 0xffffffffffff6813 , 33781 , -31269.369619, 0xfffffffffffdd05b , \"ziXUovhpqIxEQTRDRoFVlmcXeXeXwE\", 0xffffffffffff22db ) ,(0xfffffffffffec225 ,-54614 ,-130076.423664, 87245, 'lIDxwrQRGyVEhNJyflzVVVqgWKhcGQ' ,0xffffffffffffc016 ,0xfffffffffffe2ebb , 7161.573031 ) ,( 86691 , nulL , 'wArHVQUJjIkruXUMYQZmdGwACUHfCl' , nUlL , nuLL, \"IjkZVgqmoRbNhHXEXCuapacSrarUmf\" ,\"zbXFcuBLBViyEjNoOMRfGzqVGzGYnV\" , 65818.863137 ) , ( 17501.998482, -19763.038658 , NuLl , nULL , 0xffffffffffff8053, \"FaiYqJUJdeMBqhSXLvNRjkRdoBKHCi\",NuLl , -125847 ) , ( 'FzlNatGeghhHXEaEvGZCzQAinUIark' , -10893.427711 , 0xf36e , nULl, 0xfffffffffffe71a8 , 195649.986775, 61898 , \"SvtCaHMKbyDCcWqvZnsMKHRNRGPRFC\" ), ( 69426 , 'mZiasHoxeIhKBTaiSGTQJtwxtvoobg' ,'ZHWcgyackLzxYXDOwAgVbWRANJZWoW' , 'wGkUsXdrbWcmOrGRxGyilsQAEijGvW' , \"OqKCBdtgWHePQzvBEzRUkypYgXdIbs\" , nUll ,'SOPYdoFzxfIlwcCUsnLsIlcLNugdIJ' , 0x1be89 ), (NuLL , null , nuLl , 94923.703353 , 24742.987834 , -47458, -78436, 0xfffffffffffcda0f ) ON DUPLICATE KEY UPDATE col1 = VALUES(col2)"
],
"mz": [
{
"digest_max_size": 300,
"grouping_limit": 3,
"groups_grouping_limit": 7,
"digest": "INSERT INTO db.table (col1,col2,col3) VALUES (?,?,?,...),(?,?,?,...),(?,?,?,...),(?,?,?,...),(?,?,?,...),(?,?,?,...),(?,?,?,...),... ON DUPLICATE KEY UPDATE col1 = VALUES(col2)"
}
]
},
{
// digest_corner_cases_4.hjson - Testing the compression limits of number parsing when buffer is exceeded
"q": [
"INSERT INTO db.table (col1,col2,col3) VALUES ( 0x1bb81 , 214957.551736 , NuLL , 13931.135294 , 23747.192325 ,123446.135101 , NULL , \"qishXAQYMGjKECmKDOMPhdcAnCKsIZ\" , 0xdf06 ) , ( 0xeeb2, 61634.403212 ,\"WLrEhMSFQunfdVMBlNTHuTOoJnZWXp\" , 134001 ,0x11691 ,-117247 , null , 185039.893374,0xfffffffffffdec0c ) , ( 63386.842817 ,NUll , NuLL ,'rjEesshgtPbGPhQQPPJdzShBDxgqtX', -70027.364007 , -33812,16088, -55381.721224 , 30937.841446 ) , ( -86381.060501 ,42818 , \"dWQiQvHpsqARowGWJYDfCWFfftJCQF\" , \"usJPVckeqNRKoRbJhZcnjlKWxdRFqx\", 'vmHWbmdhfopTPzKzBktGDHfgAWvTjK' , -144765.876660 ,'zpUGEePzmDcktBrkWvpAjFvIYJLjJk' , nuLL , nulL) , ( Null , -60588.485877,0xfffffffffffef1d8 , 0x186f3 , 'YRTtjWCbHXxqDAjfhqAeyOkflwUkUy' , Null , 30300 , -79082 , -53386.660287 ) , (nuLL, 101067.756480, 'QJqcLLvbdUKvElZnitrCPiBmxttzPR' , 82544.127490, \"pLwcmgkGEruDvPuJbjVWqigQKLtApm\" , NuLl ,\"pHCWIfigWjGHRWGbmrEYboNjNRrVle\" , 273.951202 , 0x1611e) , ( 'xEqRpKSqBETVFlBrmUWDBNvXiWhLAv' ,0x2d71b , -7610.975745 , 49496.141605 , 0x5a3b, 41343, 187409, \"ogsXdRWyoxDtZIIsgbUQIBnHRPVBCr\" , \"OKDhJKxprZcDdKrveMoCipXkyBOWzB\") ,(179771.894977 , 'exEZujUOHgZlQNHbNBmzuqGvfIjSmh' , 110148.494099 , 0x22668,0xbb55 ,'WUAcoNyluxqJGkRXIynFEAzaHGoNUm', 99168 ,98435.675651 , 83750.793947 ), ( -55183.197960 , -209785 ,NULl ,-131058 ,-40439.196182 , 0xfffffffffffeef1e , 'bOWeCuKfVyMAHgcRjonjLlHffKkVUj',-152886 , 74587.327657 ) ON DUPLICATE KEY UPDATE col1 = VALUES(col2)"
],
"mz": [
{
"digest_max_size": 300,
"grouping_limit": 3,
"groups_grouping_limit": 7,
"digest": "INSERT INTO db.table (col1,col2,col3) VALUES (?,?,?,...),(?,?,?,...),(?,?,?,...),(?,?,?,...),(?,?,?,...),(?,?,?,...),(?,?,?,...),... ON DUPLICATE KEY UPDATE col1 = VALUES(col2)"
}
]
}
]