Commit Graph

294 Commits

Author SHA1 Message Date
4c2909e86c MXS-2227 Fix problem, parse OPTIMIZE statements
OPTIMIZE [NO_WRITE_TO_BINLOG | LOCAL] TABLE
    tbl_name [, tbl_name] ...
    [WAIT n | NOWAIT]
2020-03-04 13:10:46 +02:00
ee8e43f26b MXS-2508 Fix problem
DIV and MOD are now also accepted instead of / and % respectively.
MOD is a keyword but (in principle incorrectly) decays into an id
when used in some other context. That is so that it will be
parser by the general function rule ("id ( ... )"). If used
incorrectly, the server will later reject.
2020-03-03 11:30:58 +02:00
8b763fb88b Merge branch '2.3' into 2.4 2020-02-12 08:27:48 +02:00
cfb3f79b54 Update 2.3.17 Change Date 2020-02-10 15:28:38 +02:00
08e572b139 Merge branch '2.3' into 2.4 2020-01-28 12:28:19 +02:00
ea2665214f MXS-2851 Fix bug 2020-01-28 12:10:24 +02:00
399f312911 MXS-2850 Fix bug 2020-01-28 11:08:27 +02:00
a7e0142224 Merge branch '2.3' into 2.4 2020-01-15 11:29:37 +02:00
790d90f229 Update 2.3.16 Change Date 2020-01-15 11:08:51 +02:00
a9a2b753c0 Update 2.4.5 change date 2019-12-18 13:25:03 +02:00
f6731a898d Update change date 2019-11-13 08:37:17 +02:00
fdfbf3e133 Update 2.4.3 change date 2019-11-05 12:21:00 +02:00
dcd3e60630 Merge branch '2.3' into 2.4 2019-11-01 14:21:48 +02:00
6cba7e8201 MXS-2732 Recognize character set names
In the tokenizer we will now recognize the character set names
of MariaDB and return a specific token for those. However, where
a character set name is not expected, it will automatically be
treated as an identifier.

Note that when the character set name is explicitly specified
for a literal string, the name must be prefixed with an underscore.
That is, if the character set name is "latin1", when used when
specifying a literal string, it's used as "_latin1 'a'".

Note that this does not fix the sqlite3 bug causing a leak, but
since the statement will now correctly be parsed, the leak will
not manifest itself.
2019-10-31 16:09:52 +02:00
ef184deb1f Merge branch '2.3' into 2.4 2019-10-31 10:06:27 +02:00
88e0c3dc37 MXS-2732 Remove old sqlite-src-3110100 directory 2019-10-30 12:05:53 +02:00
4af67e95ff MXS-2732 Take newly installed sqlite3 into use
No code differences, but the used sqlite has now been installed
in one single commit.
2019-10-30 11:36:04 +02:00
c2a601bcf5 MXS-2732 Add MaxScale sqlite3 changes
This commit contains all MaxScale changes that have been made
to sqlite3 version 3110100.
2019-10-30 11:28:39 +02:00
d2db25073b MXS-2732 Update sqlite3 tool mkopcodeh.tcl from 3200000
The mkopcodeh.tcl of sqlite3 version 3110100 has a bug that
manifests itself so that it generates broken code depending on
what keywords there are and in what order. The mkopcodeh.tcl
from 3200000 does not have that problem.
2019-10-30 11:22:31 +02:00
6df8fb2497 MXS-2732 Add sqlite3 version 3110100 2019-10-30 10:58:24 +02:00
81e78726eb MXS-2732 Rename sqlite-src-3110100 to sqlite-src-3110100.old
Originally, the sqlite installation was imported into the MaxScale
repository in the one gigantic MaxScale 1.4 -> 2.0 commit.

Consequently, there is no import commit to compare to if you want
to extract all MaxScale specific changes. To make it simpler in the
future, sqlite will now be imported in a commit of its own.
2019-10-30 10:58:24 +02:00
861e27eb00 Merge branch '2.3' into 2.4 2019-10-29 14:04:31 +02:00
df6c56e7ca Update 2.3.13 Change Date 2019-10-29 12:51:31 +02:00
82826f2de5 MXS-2733 Add fix that fixes the problem
UTC_TIMESTAMP() was missing from the list of builtin functions.
2019-10-29 09:26:41 +02:00
840b771283 Merge branch '2.3' into 2.4 2019-10-28 09:16:53 +02:00
d2996e1ba6 MXS-2733 Add fix that fixes the problem
UTC_TIMESTAMP() was missing from the list of builtin functions.
2019-10-28 08:34:39 +02:00
312469dca2 Merge branch '2.3' into 2.4 2019-10-07 16:17:53 +03:00
e7e40b0179 MXS-2713 Classify SET PASSWORD as QUERY_TYPE_WRITE
A change of the password is replicated to the slaves, so it
must only be sent to the master.
2019-10-07 14:33:53 +03:00
0dce20e5e7 Merge branch '2.3' into 2.4 2019-09-27 12:30:58 +03:00
a9f07844b3 MXS-2699 Accept '_[character_set] hex' as string
The purpose is to recognize e.g. /_utf8mb4 0xD091D092D093/ as
a valid string. The rule actually accepts /id integer/, but in
case the statement is something else but an '_' immediately
followed by a character set, followed by a hex number, it will
be rejected by the server so no harm done.
2019-09-27 12:23:04 +03:00
5bbb2e239d MXS-2699 Add rule for (expr [, expr]*)
Sofar at most (expr, expr) was accepted.
2019-09-27 12:23:04 +03:00
19487d2bfb Merge branch '2.3' into 2.4 2019-09-20 09:36:23 +03:00
aa7be1447d MXS-2688 Handle SET [ROLE|NAMES|PASSWORD|CHARACTER] explicitly
It's not correct to claim that they would modify a system variable,
so they are purely classified as QUERY_TYPE_SESSION_WRITE.
2019-09-20 09:27:38 +03:00
f587ec191d MXS-2688 Add QC operator QUERY_OP_SET
Allows RWS to unconditionally send all SET-statements to
all servers.
2019-09-20 09:27:38 +03:00
5e2d9f599b Merge branch '2.3' into 2.4 2019-09-16 09:50:05 +03:00
01ab0c8736 MXS-2553 Allow parenthesis around SELECT
With this change, a parenthesized top-level SELECT, such as
"(SELECT f FROM t)" will be fully parsed. Before this change,
the statement was classified as invalid and would thus have
been sent to the master.

With this change also statements like

    (SELECT f FROM t1) UNION (SELECT f FROM t2)

will be correctly classified, although only partially parsed.
2019-09-13 15:45:16 +03:00
7531515259 MXS-2674 Fix query classification
With these changes

  SET @saved_cs_client= @@character_set_client;

will be classified as QUERY_TYPE_USERVAR_WRITE and

  SELECT 1 AS c1 FROM t1 ORDER BY ( SELECT 1 AS c2 FROM
    t1 GROUP BY GREATEST(LAST_INSERT_ID(), t1.a) ORDER BY
      GREATEST(LAST_INSERT_ID(), t1.a) LIMIT 1);

will be classified as QUERY_TYPE_READ|QUERY_TYPE_MASTER_READ
2019-09-13 15:43:57 +03:00
c079d1312e MXS-2674 Recognize timediff as builtin function 2019-09-12 12:38:57 +03:00
0ba779d5a2 Update 2.4.0 Change Date 2019-06-25 10:11:55 +03:00
d03e025046 MXS-2553 Allow parenthesis around SELECT
With this change, a parenthesized top-level SELECT, such as
"(SELECT f FROM t)" will be fully parsed. Before this change,
the statement was classified as invalid and would thus have
been sent to the master.

With this change also statements like

    (SELECT f FROM t1) UNION (SELECT f FROM t2)

will be correctly classified, although only partially parsed.
2019-06-13 10:42:46 +03:00
a0fcf67993 Merge branch '2.3' into develop 2019-06-12 11:29:03 +03:00
b98ff222f0 Merge branch '2.3.8' into 2.3 2019-06-12 11:26:33 +03:00
814ae196e9 qc_sqlite: Replace strncpy with memcpy
On RHEL8 the former may give rise to incorrect

    error: 'char* strncpy(char*, const char*, size_t)' destination
    unchanged after copying no bytes [-Werror=stringop-truncation]
2019-06-11 20:14:58 +03:00
1e3da20409 Merge branch '2.3' into develop 2019-06-11 13:54:51 +03:00
acc5863fe2 MXS-2442 ':N' accepted as pos. parameter in Oracle mode 2019-06-11 13:53:09 +03:00
4efa9dbeea Remove maxscale/alloc.h
The remaining contents were moved to maxbase/alloc.h.
2019-06-10 14:11:25 +03:00
ba60b92612 Merge branch '2.3' into develop 2019-06-05 14:48:43 +03:00
b8d601aab2 MXS-2250 Reveal table information for 'DESCRIBE tbl'
When a statement like 'DESCRIBE tbl' is classified, the table
name will now be available so that a router can check whether the
table is a temporary one. In that case, the statement must be sent
to the master.
2019-06-05 14:28:45 +03:00
b635cc92ab MXS-1783 Add 10.4 support
qc_mysqlembedded can now be built using the embedded library from
MariaDB 10.4.
2019-05-31 15:12:57 +03:00
de95fcc9d6 Format rest of the sources 2019-05-10 10:31:12 +03:00