Johan Wikman
9ae0526efb
MXS-1275: Extend QC-API to allow setting of sql mode
...
Only API changes, implementation will follow.
2017-06-28 21:36:08 +02:00
Johan Wikman
4bf2b27b3e
MXS-1275: Accept @@[SESSION|GLOBAL].sql_mode = ...
2017-06-28 21:36:08 +02:00
Johan Wikman
21c1845798
MXS-1275: Accept LOCAL as a synonum for SESSION
2017-06-28 21:36:08 +02:00
Johan Wikman
2483f95be2
MXS-1275: Test comment handling
2017-06-28 21:36:08 +02:00
Johan Wikman
1c6c19d6ae
MXS-1275: Inherit TrxBoundaryParser from CustomParser
2017-06-28 21:36:08 +02:00
Johan Wikman
9386143437
MXS-1275: Test also using non-contiguous statements
2017-06-28 21:33:04 +02:00
Johan Wikman
ee27efd62e
MXS-1275: Add custom parser for "SET SQL_MODE=..."
...
SetSqlModeParser is a custom parser for detecting "SET SQL_MODE=..."
statements. It will be used in mysql_client and the result will be
used for updating the sql_mode of a session (that is to be added).
Thereafter, whenever a statement arrives, the value of that sql_mode
will be used for setting the mode of the query_classifier.
2017-06-28 21:33:04 +02:00
Johan Wikman
04cae711f6
MXS-1275: Add class for custom parsing
...
maxscale::CustomParser is a helper class to be used when making
custom recursive-descent parsers for detecting something specific.
2017-06-28 21:33:04 +02:00
Johan Wikman
cd1e3f26cf
MXS-1275: Compile mysql_client as C++
...
A custom parser for detecting "set sql_mode=ORACLE" is needed
and writing that is C++ is more convenient than writing it in
C. Consequently, so as to be able to use that parser, mysql_client
must be compiled as C++.
2017-06-28 21:33:04 +02:00
Johan Wikman
94b0b082e4
MXS-1275: Make sql_mode a property of the current context
...
The sql mode is now a property of the info object used for storing
parsing related information. It is initialized with the value of the
sql mode qc_sqlite was initialized with.
This will be further changed so that the mode can be adjusted at
runtime so that the sql mode can be the property of a session. That
is, once set it will affect all future parsing for that session.
2017-06-28 21:33:04 +02:00
Johan Wikman
cc0c193d2e
MXS-1196: Run Oracle test only when built against 10.3
2017-06-28 21:33:04 +02:00
Johan Wikman
3cf2db32d7
Find right embedded library
2017-06-28 21:33:04 +02:00
Johan Wikman
d9b4013b69
MXS-1196: Add Oracle tests
2017-06-28 21:33:04 +02:00
Johan Wikman
9431aded48
MXS-1196: Do not translate keywords that arrive first
2017-06-28 21:33:04 +02:00
Johan Wikman
e9ad1ea7bb
MXS-1196: Recognize SQL%ROWCOUNT
...
Special handling is needed as otherwise "SQL%ROWCOUNT" does not
appear as a function but as the function "%" and the fields "SQL"
and "ROWCOUNT".
2017-06-28 21:33:04 +02:00
Johan Wikman
8b6fc49dc1
MXS-1196: Turn certain keywords into ids
2017-06-28 21:33:04 +02:00
Johan Wikman
77f05b49d0
MXS-1196: Handle top-level FOR loops
...
The content is ignored and the type is QUERY_TYPE_WRITE.
2017-06-28 21:33:04 +02:00
Johan Wikman
b492f09d61
MXS-1196: Add Oracle tests
2017-06-28 21:33:04 +02:00
Johan Wikman
f9eef5ee3b
MXS-1196: Classify SHOW as QUERY_TYPE_READ
2017-06-28 21:33:04 +02:00
Johan Wikman
49c9c60c63
MXS-1196: Parse arguments to CALL.
2017-06-28 21:33:04 +02:00
Johan Wikman
dd5360d30c
MXS-1196: Handle delimiter explicitly, ignore comments
2017-06-28 21:33:04 +02:00
Johan Wikman
fd3258f7f7
MXS-1196: Ignore mysqltest keywords unless delim is ;
2017-06-28 21:33:04 +02:00
Johan Wikman
a73200ad50
MXS-1196: Add Oracle tests
2017-06-28 21:33:04 +02:00
Johan Wikman
eaf5a4152b
MXS-1196: Handle eol-comments
...
Eol-comments need to be followed by a newline as otherwise the
rest of a test-statement will be excluded.
2017-06-28 21:33:04 +02:00
Johan Wikman
332e1bbb7c
MXS-1196: Add more Oracle tests
2017-06-28 21:33:04 +02:00
Johan Wikman
31f2b340ea
MXS-1196: Add more Oracle tests
2017-06-28 21:33:04 +02:00
Johan Wikman
38863bd319
MXS-1196: Handle "exit" correctly
...
"exit" is both a mysqltest and PL/SQL keyword.
2017-06-28 21:33:04 +02:00
Johan Wikman
09b0c44be5
MXS-1196: Add new Oracle test
2017-06-28 21:33:04 +02:00
Johan Wikman
2a89a4de45
MXS-1196: Handle DECLARE
...
DECLARE can also begin an anonymous block in PL/SQL.
2017-06-28 21:33:04 +02:00
Johan Wikman
bf54a9bf9f
MXS-1196: Handle anonymous blocks
...
In PL/SQL BEGIN starts a block (i.e. not a transaction). Whenever we
see that, we assume it is such a block, consume all input and set the
type to QUERY_TYPE_WRITE to ensure it goes to master.
2017-06-28 21:33:04 +02:00
Johan Wikman
f26fb085bc
MXS-1196: Handle "while" correctly
...
"while" is both a mysqltest and PL/SQL keyword.
2017-06-28 21:33:04 +02:00
Johan Wikman
b700a77da6
MXS-1196: Add test for Oracle sequences
2017-06-28 21:33:04 +02:00
Johan Wikman
573a2c6160
MXS-1196: Accept ".tbl.col" columns names
2017-06-28 21:33:04 +02:00
Johan Wikman
9ecd5da255
MXS-1196: Handle sequence related fields/functions
...
Both 10.3 and Oracle support sequence pseudo colums and corresponding
functions. Getting the next number in the sequence is in both cases
obtained using nextval/nextval() but the current number is in Oracle
obtained using currval/currval() and in 10.3 using lastval/lastval().
These fields/functions are now ignored, in the sense that they will
not show up in the field/function infos. However, they will cause the
type mask of the statement to contain the bit QUERY_TYPE_WRITE so that
statements accessing the sequence will always be sent to the master.
2017-06-28 21:33:04 +02:00
Johan Wikman
61b265467b
MXS-1196: Add support for DROP SEQUENCE
2017-06-28 21:33:04 +02:00
Johan Wikman
6645a0581f
MXS-1196: Add support for [SHOW] CREATE SEQUENCE
2017-06-28 21:33:04 +02:00
Johan Wikman
8b4e092d26
MXS-1196: Give same argument to both classifiers
2017-06-28 21:33:04 +02:00
Johan Wikman
bea8513f9d
MXS-1196: Amend default arguments with given
2017-06-28 21:33:04 +02:00
Johan Wikman
6b93a44be1
MXS-1196: Add PS tests
...
The names of the Oracle related tests are renamed as well to make it easier
to see what exactly fails.
2017-06-28 21:33:04 +02:00
Johan Wikman
116e2cd974
MXS-1196: Handle Oracle EXECUTE and PREPARE statements
...
- EXECUTE IMMEDIATE ...
- PREPARE stmt FROM dynamic string
2017-06-28 21:33:04 +02:00
Johan Wikman
7c1afe5d2c
MXS-1196: Not all preparable stmts can be parsed
...
But the out arguments of ...get_[field|function]_infos must
be sensible and the functions must not crash.
2017-06-28 21:33:04 +02:00
Johan Wikman
66e027febd
MXS-1196: Accept EXECUTE ... USING <INTEGER>
2017-06-28 21:33:04 +02:00
Johan Wikman
471fa01f40
MXS-1196: A single '?' is not a user variable
2017-06-28 21:33:04 +02:00
Johan Wikman
fba45fd763
MXS-1196: Add more Oracle tests
2017-06-28 21:33:04 +02:00
Johan Wikman
ee54f3ac61
MXS-1196: Hide implicit translations
...
The embedded library, when used in Oracle mode, reports the use of
"concat" as "concat_operator_oracle" and the use of "decode" as "case.
2017-06-28 21:33:04 +02:00
Johan Wikman
6c334aa12c
MXS-1196: Add Oracle test
2017-06-28 21:33:04 +02:00
Johan Wikman
a5637a311c
MXS-1196: Recognize builtin Oracle functions
2017-06-28 21:33:04 +02:00
Johan Wikman
1d2ca5cde7
MXS-1196: Translate NVL into IFNULL
2017-06-28 21:33:04 +02:00
Johan Wikman
abd12d1376
MXS-1196: Add Oracle test
2017-06-28 21:33:04 +02:00
Johan Wikman
c46f16041e
MXS-1196: Ignore the DUAL table
...
The embedded parser ignores the DUAL table so it's better if
qc_sqlite does that as well.
2017-06-28 21:33:04 +02:00