You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 4f44ca4
Browse filesBrowse the repository at this point in the historyBrowse files
feat: parse MySQL index hint scopes, row and table insert sources and DELETE USING joins
MySQL 8.4 index hints with FOR JOIN/ORDER BY/GROUP BY, several hints on
one table, USE INDEX () and IGNORE KEY failed, as did
WEIGHT_STRING(x AS CHAR(n)), INSERT ... VALUES ROW(...), INSERT ... TABLE t,
INSERT INTO t () VALUES () and DELETE FROM t1 USING t1 JOIN t2.
INSERT ... PARTITION (p) (cols) rendered PARTITION after the column list,
and toString() and the deparsers disagreed on several INSERT and REPLACE
forms.
Keep every index hint in Table.getIndexHints() with a typed
MySQLIndexHint.Scope, parsed by one list production and rendered by one
helper; getIndexHint() returns the first. Store the WEIGHT_STRING cast in
Function.getCastType(), a ColDataType built as in CAST from exactly
CHAR(n) or BINARY(n) after the single argument. Let VALUES ROW( and
TABLE name reach the existing Values and TableStatement sources, and
share an InsertColumnList production that accepts () between INSERT and
REPLACE. Hold the joins of a DELETE USING clause in
Delete.getUsingJoins() and render the target's joins before USING. The
cast type and the REPLACE column list carry nodes spanning their source.
Render INSERT through one ordered Insert.appendTo with renderer callbacks,
used by toString() and InsertDeParser, with callback appendTo methods on
InsertDuplicateAction, InsertConflictAction and OracleMultiInsertClause.
The deparser now keeps ON DUPLICATE KEY UPDATE ... WHERE and visits the
ON CONFLICT action; the unused Insert.duplicateUpdateSets field is gone.
Signed-off-by: minleejae <mmj9808@gmail.com>
0 commit comments