DBZ-7693 Introduce MariaDB-specific grammar

This commit is contained in:
Chris Cranford 2024-03-29 10:07:50 -04:00 committed by Jiri Pechanec
parent 23677ba2cb
commit 1fa9453b1d
45 changed files with 9050 additions and 288 deletions

View File

@ -15,6 +15,7 @@
import org.antlr.v4.runtime.CharStream; import org.antlr.v4.runtime.CharStream;
import org.antlr.v4.runtime.CommonTokenStream; import org.antlr.v4.runtime.CommonTokenStream;
import org.antlr.v4.runtime.misc.Interval;
import org.antlr.v4.runtime.tree.ParseTree; import org.antlr.v4.runtime.tree.ParseTree;
import io.debezium.antlr.AntlrDdlParser; import io.debezium.antlr.AntlrDdlParser;
@ -24,10 +25,12 @@
import io.debezium.connector.mariadb.antlr.listener.MariaDbAntlrDdlParserListener; import io.debezium.connector.mariadb.antlr.listener.MariaDbAntlrDdlParserListener;
import io.debezium.connector.mariadb.charset.CharsetMappingResolver; import io.debezium.connector.mariadb.charset.CharsetMappingResolver;
import io.debezium.connector.mariadb.jdbc.MariaDbValueConverters; import io.debezium.connector.mariadb.jdbc.MariaDbValueConverters;
import io.debezium.ddl.parser.mysql.generated.MySqlLexer; import io.debezium.ddl.parser.mariadb.generated.MariaDBLexer;
import io.debezium.ddl.parser.mysql.generated.MySqlParser; import io.debezium.ddl.parser.mariadb.generated.MariaDBParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParser.CharsetNameContext; import io.debezium.ddl.parser.mariadb.generated.MariaDBParser.CharsetNameContext;
import io.debezium.ddl.parser.mysql.generated.MySqlParser.CollationNameContext; import io.debezium.ddl.parser.mariadb.generated.MariaDBParser.CollationNameContext;
import io.debezium.ddl.parser.mariadb.generated.MariaDBParser.RenameTableClauseContext;
import io.debezium.ddl.parser.mariadb.generated.MariaDBParser.RenameTableContext;
import io.debezium.relational.Column; import io.debezium.relational.Column;
import io.debezium.relational.ColumnEditor; import io.debezium.relational.ColumnEditor;
import io.debezium.relational.SystemVariables; import io.debezium.relational.SystemVariables;
@ -40,7 +43,7 @@
* *
* @author Chris Cranford * @author Chris Cranford
*/ */
public class MariaDbAntlrDdlParser extends AntlrDdlParser<MySqlLexer, MySqlParser> { public class MariaDbAntlrDdlParser extends AntlrDdlParser<MariaDBLexer, MariaDBParser> {
private final ConcurrentHashMap<String, String> charsetNameForDatabase = new ConcurrentHashMap<>(); private final ConcurrentHashMap<String, String> charsetNameForDatabase = new ConcurrentHashMap<>();
private final MariaDbValueConverters converters; private final MariaDbValueConverters converters;
@ -67,7 +70,7 @@ public MariaDbAntlrDdlParser(boolean throwWerrorsFromTreeWalk, boolean includeVi
} }
@Override @Override
protected ParseTree parseTree(MySqlParser parser) { protected ParseTree parseTree(MariaDBParser parser) {
return parser.root(); return parser.root();
} }
@ -77,13 +80,13 @@ protected AntlrDdlParserListener createParseTreeWalkerListener() {
} }
@Override @Override
protected MySqlLexer createNewLexerInstance(CharStream charStreams) { protected MariaDBLexer createNewLexerInstance(CharStream charStreams) {
return new MySqlLexer(charStreams); return new MariaDBLexer(charStreams);
} }
@Override @Override
protected MySqlParser createNewParserInstance(CommonTokenStream commonTokenStream) { protected MariaDBParser createNewParserInstance(CommonTokenStream commonTokenStream) {
return new MySqlParser(commonTokenStream); return new MariaDBParser(commonTokenStream);
} }
@Override @Override
@ -99,128 +102,128 @@ protected boolean isGrammarInUpperCase() {
@Override @Override
protected DataTypeResolver initializeDataTypeResolver() { protected DataTypeResolver initializeDataTypeResolver() {
DataTypeResolver.Builder dataTypeResolverBuilder = new DataTypeResolver.Builder(); DataTypeResolver.Builder dataTypeResolverBuilder = new DataTypeResolver.Builder();
dataTypeResolverBuilder.registerDataTypes(MySqlParser.StringDataTypeContext.class.getCanonicalName(), Arrays.asList( dataTypeResolverBuilder.registerDataTypes(MariaDBParser.StringDataTypeContext.class.getCanonicalName(), Arrays.asList(
new DataTypeResolver.DataTypeEntry(Types.CHAR, MySqlParser.CHAR), new DataTypeResolver.DataTypeEntry(Types.CHAR, MariaDBParser.CHAR),
new DataTypeResolver.DataTypeEntry(Types.VARCHAR, MySqlParser.CHAR, MySqlParser.VARYING), new DataTypeResolver.DataTypeEntry(Types.VARCHAR, MariaDBParser.CHAR, MariaDBParser.VARYING),
new DataTypeResolver.DataTypeEntry(Types.VARCHAR, MySqlParser.VARCHAR), new DataTypeResolver.DataTypeEntry(Types.VARCHAR, MariaDBParser.VARCHAR),
new DataTypeResolver.DataTypeEntry(Types.VARCHAR, MySqlParser.TINYTEXT), new DataTypeResolver.DataTypeEntry(Types.VARCHAR, MariaDBParser.TINYTEXT),
new DataTypeResolver.DataTypeEntry(Types.VARCHAR, MySqlParser.TEXT), new DataTypeResolver.DataTypeEntry(Types.VARCHAR, MariaDBParser.TEXT),
new DataTypeResolver.DataTypeEntry(Types.VARCHAR, MySqlParser.MEDIUMTEXT), new DataTypeResolver.DataTypeEntry(Types.VARCHAR, MariaDBParser.MEDIUMTEXT),
new DataTypeResolver.DataTypeEntry(Types.VARCHAR, MySqlParser.LONGTEXT), new DataTypeResolver.DataTypeEntry(Types.VARCHAR, MariaDBParser.LONGTEXT),
new DataTypeResolver.DataTypeEntry(Types.VARCHAR, MySqlParser.LONG), new DataTypeResolver.DataTypeEntry(Types.VARCHAR, MariaDBParser.LONG),
new DataTypeResolver.DataTypeEntry(Types.NCHAR, MySqlParser.NCHAR), new DataTypeResolver.DataTypeEntry(Types.NCHAR, MariaDBParser.NCHAR),
new DataTypeResolver.DataTypeEntry(Types.NVARCHAR, MySqlParser.NCHAR, MySqlParser.VARYING), new DataTypeResolver.DataTypeEntry(Types.NVARCHAR, MariaDBParser.NCHAR, MariaDBParser.VARYING),
new DataTypeResolver.DataTypeEntry(Types.NVARCHAR, MySqlParser.NVARCHAR), new DataTypeResolver.DataTypeEntry(Types.NVARCHAR, MariaDBParser.NVARCHAR),
new DataTypeResolver.DataTypeEntry(Types.CHAR, MySqlParser.CHAR, MySqlParser.BINARY), new DataTypeResolver.DataTypeEntry(Types.CHAR, MariaDBParser.CHAR, MariaDBParser.BINARY),
new DataTypeResolver.DataTypeEntry(Types.VARCHAR, MySqlParser.VARCHAR, MySqlParser.BINARY), new DataTypeResolver.DataTypeEntry(Types.VARCHAR, MariaDBParser.VARCHAR, MariaDBParser.BINARY),
new DataTypeResolver.DataTypeEntry(Types.VARCHAR, MySqlParser.TINYTEXT, MySqlParser.BINARY), new DataTypeResolver.DataTypeEntry(Types.VARCHAR, MariaDBParser.TINYTEXT, MariaDBParser.BINARY),
new DataTypeResolver.DataTypeEntry(Types.VARCHAR, MySqlParser.TEXT, MySqlParser.BINARY), new DataTypeResolver.DataTypeEntry(Types.VARCHAR, MariaDBParser.TEXT, MariaDBParser.BINARY),
new DataTypeResolver.DataTypeEntry(Types.VARCHAR, MySqlParser.MEDIUMTEXT, MySqlParser.BINARY), new DataTypeResolver.DataTypeEntry(Types.VARCHAR, MariaDBParser.MEDIUMTEXT, MariaDBParser.BINARY),
new DataTypeResolver.DataTypeEntry(Types.VARCHAR, MySqlParser.LONGTEXT, MySqlParser.BINARY), new DataTypeResolver.DataTypeEntry(Types.VARCHAR, MariaDBParser.LONGTEXT, MariaDBParser.BINARY),
new DataTypeResolver.DataTypeEntry(Types.NCHAR, MySqlParser.NCHAR, MySqlParser.BINARY), new DataTypeResolver.DataTypeEntry(Types.NCHAR, MariaDBParser.NCHAR, MariaDBParser.BINARY),
new DataTypeResolver.DataTypeEntry(Types.NVARCHAR, MySqlParser.NVARCHAR, MySqlParser.BINARY), new DataTypeResolver.DataTypeEntry(Types.NVARCHAR, MariaDBParser.NVARCHAR, MariaDBParser.BINARY),
new DataTypeResolver.DataTypeEntry(Types.CHAR, MySqlParser.CHARACTER), new DataTypeResolver.DataTypeEntry(Types.CHAR, MariaDBParser.CHARACTER),
new DataTypeResolver.DataTypeEntry(Types.VARCHAR, MySqlParser.CHARACTER, MySqlParser.VARYING))); new DataTypeResolver.DataTypeEntry(Types.VARCHAR, MariaDBParser.CHARACTER, MariaDBParser.VARYING)));
dataTypeResolverBuilder.registerDataTypes(MySqlParser.NationalStringDataTypeContext.class.getCanonicalName(), Arrays.asList( dataTypeResolverBuilder.registerDataTypes(MariaDBParser.NationalStringDataTypeContext.class.getCanonicalName(), Arrays.asList(
new DataTypeResolver.DataTypeEntry(Types.NVARCHAR, MySqlParser.NATIONAL, MySqlParser.VARCHAR).setSuffixTokens(MySqlParser.BINARY), new DataTypeResolver.DataTypeEntry(Types.NVARCHAR, MariaDBParser.NATIONAL, MariaDBParser.VARCHAR).setSuffixTokens(MariaDBParser.BINARY),
new DataTypeResolver.DataTypeEntry(Types.NCHAR, MySqlParser.NATIONAL, MySqlParser.CHARACTER).setSuffixTokens(MySqlParser.BINARY), new DataTypeResolver.DataTypeEntry(Types.NCHAR, MariaDBParser.NATIONAL, MariaDBParser.CHARACTER).setSuffixTokens(MariaDBParser.BINARY),
new DataTypeResolver.DataTypeEntry(Types.NCHAR, MySqlParser.NATIONAL, MySqlParser.CHAR).setSuffixTokens(MySqlParser.BINARY), new DataTypeResolver.DataTypeEntry(Types.NCHAR, MariaDBParser.NATIONAL, MariaDBParser.CHAR).setSuffixTokens(MariaDBParser.BINARY),
new DataTypeResolver.DataTypeEntry(Types.NVARCHAR, MySqlParser.NCHAR, MySqlParser.VARCHAR).setSuffixTokens(MySqlParser.BINARY))); new DataTypeResolver.DataTypeEntry(Types.NVARCHAR, MariaDBParser.NCHAR, MariaDBParser.VARCHAR).setSuffixTokens(MariaDBParser.BINARY)));
dataTypeResolverBuilder.registerDataTypes(MySqlParser.NationalVaryingStringDataTypeContext.class.getCanonicalName(), Arrays.asList( dataTypeResolverBuilder.registerDataTypes(MariaDBParser.NationalVaryingStringDataTypeContext.class.getCanonicalName(), Arrays.asList(
new DataTypeResolver.DataTypeEntry(Types.NVARCHAR, MySqlParser.NATIONAL, MySqlParser.CHAR, MySqlParser.VARYING), new DataTypeResolver.DataTypeEntry(Types.NVARCHAR, MariaDBParser.NATIONAL, MariaDBParser.CHAR, MariaDBParser.VARYING),
new DataTypeResolver.DataTypeEntry(Types.NVARCHAR, MySqlParser.NATIONAL, MySqlParser.CHARACTER, MySqlParser.VARYING))); new DataTypeResolver.DataTypeEntry(Types.NVARCHAR, MariaDBParser.NATIONAL, MariaDBParser.CHARACTER, MariaDBParser.VARYING)));
dataTypeResolverBuilder.registerDataTypes(MySqlParser.DimensionDataTypeContext.class.getCanonicalName(), Arrays.asList( dataTypeResolverBuilder.registerDataTypes(MariaDBParser.DimensionDataTypeContext.class.getCanonicalName(), Arrays.asList(
new DataTypeResolver.DataTypeEntry(Types.SMALLINT, MySqlParser.TINYINT) new DataTypeResolver.DataTypeEntry(Types.SMALLINT, MariaDBParser.TINYINT)
.setSuffixTokens(MySqlParser.SIGNED, MySqlParser.UNSIGNED, MySqlParser.ZEROFILL), .setSuffixTokens(MariaDBParser.SIGNED, MariaDBParser.UNSIGNED, MariaDBParser.ZEROFILL),
new DataTypeResolver.DataTypeEntry(Types.SMALLINT, MySqlParser.INT1) new DataTypeResolver.DataTypeEntry(Types.SMALLINT, MariaDBParser.INT1)
.setSuffixTokens(MySqlParser.SIGNED, MySqlParser.UNSIGNED, MySqlParser.ZEROFILL), .setSuffixTokens(MariaDBParser.SIGNED, MariaDBParser.UNSIGNED, MariaDBParser.ZEROFILL),
new DataTypeResolver.DataTypeEntry(Types.SMALLINT, MySqlParser.SMALLINT) new DataTypeResolver.DataTypeEntry(Types.SMALLINT, MariaDBParser.SMALLINT)
.setSuffixTokens(MySqlParser.SIGNED, MySqlParser.UNSIGNED, MySqlParser.ZEROFILL), .setSuffixTokens(MariaDBParser.SIGNED, MariaDBParser.UNSIGNED, MariaDBParser.ZEROFILL),
new DataTypeResolver.DataTypeEntry(Types.SMALLINT, MySqlParser.INT2) new DataTypeResolver.DataTypeEntry(Types.SMALLINT, MariaDBParser.INT2)
.setSuffixTokens(MySqlParser.SIGNED, MySqlParser.UNSIGNED, MySqlParser.ZEROFILL), .setSuffixTokens(MariaDBParser.SIGNED, MariaDBParser.UNSIGNED, MariaDBParser.ZEROFILL),
new DataTypeResolver.DataTypeEntry(Types.INTEGER, MySqlParser.MEDIUMINT) new DataTypeResolver.DataTypeEntry(Types.INTEGER, MariaDBParser.MEDIUMINT)
.setSuffixTokens(MySqlParser.SIGNED, MySqlParser.UNSIGNED, MySqlParser.ZEROFILL), .setSuffixTokens(MariaDBParser.SIGNED, MariaDBParser.UNSIGNED, MariaDBParser.ZEROFILL),
new DataTypeResolver.DataTypeEntry(Types.INTEGER, MySqlParser.INT3) new DataTypeResolver.DataTypeEntry(Types.INTEGER, MariaDBParser.INT3)
.setSuffixTokens(MySqlParser.SIGNED, MySqlParser.UNSIGNED, MySqlParser.ZEROFILL), .setSuffixTokens(MariaDBParser.SIGNED, MariaDBParser.UNSIGNED, MariaDBParser.ZEROFILL),
new DataTypeResolver.DataTypeEntry(Types.INTEGER, MySqlParser.MIDDLEINT) new DataTypeResolver.DataTypeEntry(Types.INTEGER, MariaDBParser.MIDDLEINT)
.setSuffixTokens(MySqlParser.SIGNED, MySqlParser.UNSIGNED, MySqlParser.ZEROFILL), .setSuffixTokens(MariaDBParser.SIGNED, MariaDBParser.UNSIGNED, MariaDBParser.ZEROFILL),
new DataTypeResolver.DataTypeEntry(Types.INTEGER, MySqlParser.INT) new DataTypeResolver.DataTypeEntry(Types.INTEGER, MariaDBParser.INT)
.setSuffixTokens(MySqlParser.SIGNED, MySqlParser.UNSIGNED, MySqlParser.ZEROFILL), .setSuffixTokens(MariaDBParser.SIGNED, MariaDBParser.UNSIGNED, MariaDBParser.ZEROFILL),
new DataTypeResolver.DataTypeEntry(Types.INTEGER, MySqlParser.INTEGER) new DataTypeResolver.DataTypeEntry(Types.INTEGER, MariaDBParser.INTEGER)
.setSuffixTokens(MySqlParser.SIGNED, MySqlParser.UNSIGNED, MySqlParser.ZEROFILL), .setSuffixTokens(MariaDBParser.SIGNED, MariaDBParser.UNSIGNED, MariaDBParser.ZEROFILL),
new DataTypeResolver.DataTypeEntry(Types.INTEGER, MySqlParser.INT4) new DataTypeResolver.DataTypeEntry(Types.INTEGER, MariaDBParser.INT4)
.setSuffixTokens(MySqlParser.SIGNED, MySqlParser.UNSIGNED, MySqlParser.ZEROFILL), .setSuffixTokens(MariaDBParser.SIGNED, MariaDBParser.UNSIGNED, MariaDBParser.ZEROFILL),
new DataTypeResolver.DataTypeEntry(Types.BIGINT, MySqlParser.BIGINT) new DataTypeResolver.DataTypeEntry(Types.BIGINT, MariaDBParser.BIGINT)
.setSuffixTokens(MySqlParser.SIGNED, MySqlParser.UNSIGNED, MySqlParser.ZEROFILL), .setSuffixTokens(MariaDBParser.SIGNED, MariaDBParser.UNSIGNED, MariaDBParser.ZEROFILL),
new DataTypeResolver.DataTypeEntry(Types.BIGINT, MySqlParser.INT8) new DataTypeResolver.DataTypeEntry(Types.BIGINT, MariaDBParser.INT8)
.setSuffixTokens(MySqlParser.SIGNED, MySqlParser.UNSIGNED, MySqlParser.ZEROFILL), .setSuffixTokens(MariaDBParser.SIGNED, MariaDBParser.UNSIGNED, MariaDBParser.ZEROFILL),
new DataTypeResolver.DataTypeEntry(Types.REAL, MySqlParser.REAL) new DataTypeResolver.DataTypeEntry(Types.REAL, MariaDBParser.REAL)
.setSuffixTokens(MySqlParser.SIGNED, MySqlParser.UNSIGNED, MySqlParser.ZEROFILL), .setSuffixTokens(MariaDBParser.SIGNED, MariaDBParser.UNSIGNED, MariaDBParser.ZEROFILL),
new DataTypeResolver.DataTypeEntry(Types.DOUBLE, MySqlParser.DOUBLE) new DataTypeResolver.DataTypeEntry(Types.DOUBLE, MariaDBParser.DOUBLE)
.setSuffixTokens(MySqlParser.PRECISION, MySqlParser.SIGNED, MySqlParser.UNSIGNED, MySqlParser.ZEROFILL), .setSuffixTokens(MariaDBParser.PRECISION, MariaDBParser.SIGNED, MariaDBParser.UNSIGNED, MariaDBParser.ZEROFILL),
new DataTypeResolver.DataTypeEntry(Types.DOUBLE, MySqlParser.FLOAT8) new DataTypeResolver.DataTypeEntry(Types.DOUBLE, MariaDBParser.FLOAT8)
.setSuffixTokens(MySqlParser.PRECISION, MySqlParser.SIGNED, MySqlParser.UNSIGNED, MySqlParser.ZEROFILL), .setSuffixTokens(MariaDBParser.PRECISION, MariaDBParser.SIGNED, MariaDBParser.UNSIGNED, MariaDBParser.ZEROFILL),
new DataTypeResolver.DataTypeEntry(Types.FLOAT, MySqlParser.FLOAT) new DataTypeResolver.DataTypeEntry(Types.FLOAT, MariaDBParser.FLOAT)
.setSuffixTokens(MySqlParser.SIGNED, MySqlParser.UNSIGNED, MySqlParser.ZEROFILL), .setSuffixTokens(MariaDBParser.SIGNED, MariaDBParser.UNSIGNED, MariaDBParser.ZEROFILL),
new DataTypeResolver.DataTypeEntry(Types.FLOAT, MySqlParser.FLOAT4) new DataTypeResolver.DataTypeEntry(Types.FLOAT, MariaDBParser.FLOAT4)
.setSuffixTokens(MySqlParser.SIGNED, MySqlParser.UNSIGNED, MySqlParser.ZEROFILL), .setSuffixTokens(MariaDBParser.SIGNED, MariaDBParser.UNSIGNED, MariaDBParser.ZEROFILL),
new DataTypeResolver.DataTypeEntry(Types.DECIMAL, MySqlParser.DECIMAL) new DataTypeResolver.DataTypeEntry(Types.DECIMAL, MariaDBParser.DECIMAL)
.setSuffixTokens(MySqlParser.SIGNED, MySqlParser.UNSIGNED, MySqlParser.ZEROFILL) .setSuffixTokens(MariaDBParser.SIGNED, MariaDBParser.UNSIGNED, MariaDBParser.ZEROFILL)
.setDefaultLengthScaleDimension(10, 0), .setDefaultLengthScaleDimension(10, 0),
new DataTypeResolver.DataTypeEntry(Types.DECIMAL, MySqlParser.DEC) new DataTypeResolver.DataTypeEntry(Types.DECIMAL, MariaDBParser.DEC)
.setSuffixTokens(MySqlParser.SIGNED, MySqlParser.UNSIGNED, MySqlParser.ZEROFILL) .setSuffixTokens(MariaDBParser.SIGNED, MariaDBParser.UNSIGNED, MariaDBParser.ZEROFILL)
.setDefaultLengthScaleDimension(10, 0), .setDefaultLengthScaleDimension(10, 0),
new DataTypeResolver.DataTypeEntry(Types.DECIMAL, MySqlParser.FIXED) new DataTypeResolver.DataTypeEntry(Types.DECIMAL, MariaDBParser.FIXED)
.setSuffixTokens(MySqlParser.SIGNED, MySqlParser.UNSIGNED, MySqlParser.ZEROFILL) .setSuffixTokens(MariaDBParser.SIGNED, MariaDBParser.UNSIGNED, MariaDBParser.ZEROFILL)
.setDefaultLengthScaleDimension(10, 0), .setDefaultLengthScaleDimension(10, 0),
new DataTypeResolver.DataTypeEntry(Types.NUMERIC, MySqlParser.NUMERIC) new DataTypeResolver.DataTypeEntry(Types.NUMERIC, MariaDBParser.NUMERIC)
.setSuffixTokens(MySqlParser.SIGNED, MySqlParser.UNSIGNED, MySqlParser.ZEROFILL) .setSuffixTokens(MariaDBParser.SIGNED, MariaDBParser.UNSIGNED, MariaDBParser.ZEROFILL)
.setDefaultLengthScaleDimension(10, 0), .setDefaultLengthScaleDimension(10, 0),
new DataTypeResolver.DataTypeEntry(Types.BIT, MySqlParser.BIT) new DataTypeResolver.DataTypeEntry(Types.BIT, MariaDBParser.BIT)
.setDefaultLengthDimension(1), .setDefaultLengthDimension(1),
new DataTypeResolver.DataTypeEntry(Types.TIME, MySqlParser.TIME), new DataTypeResolver.DataTypeEntry(Types.TIME, MariaDBParser.TIME),
new DataTypeResolver.DataTypeEntry(Types.TIMESTAMP_WITH_TIMEZONE, MySqlParser.TIMESTAMP), new DataTypeResolver.DataTypeEntry(Types.TIMESTAMP_WITH_TIMEZONE, MariaDBParser.TIMESTAMP),
new DataTypeResolver.DataTypeEntry(Types.TIMESTAMP, MySqlParser.DATETIME), new DataTypeResolver.DataTypeEntry(Types.TIMESTAMP, MariaDBParser.DATETIME),
new DataTypeResolver.DataTypeEntry(Types.BINARY, MySqlParser.BINARY), new DataTypeResolver.DataTypeEntry(Types.BINARY, MariaDBParser.BINARY),
new DataTypeResolver.DataTypeEntry(Types.VARBINARY, MySqlParser.VARBINARY), new DataTypeResolver.DataTypeEntry(Types.VARBINARY, MariaDBParser.VARBINARY),
new DataTypeResolver.DataTypeEntry(Types.BLOB, MySqlParser.BLOB), new DataTypeResolver.DataTypeEntry(Types.BLOB, MariaDBParser.BLOB),
new DataTypeResolver.DataTypeEntry(Types.INTEGER, MySqlParser.YEAR))); new DataTypeResolver.DataTypeEntry(Types.INTEGER, MariaDBParser.YEAR)));
dataTypeResolverBuilder.registerDataTypes(MySqlParser.SimpleDataTypeContext.class.getCanonicalName(), Arrays.asList( dataTypeResolverBuilder.registerDataTypes(MariaDBParser.SimpleDataTypeContext.class.getCanonicalName(), Arrays.asList(
new DataTypeResolver.DataTypeEntry(Types.DATE, MySqlParser.DATE), new DataTypeResolver.DataTypeEntry(Types.DATE, MariaDBParser.DATE),
new DataTypeResolver.DataTypeEntry(Types.BLOB, MySqlParser.TINYBLOB), new DataTypeResolver.DataTypeEntry(Types.BLOB, MariaDBParser.TINYBLOB),
new DataTypeResolver.DataTypeEntry(Types.BLOB, MySqlParser.MEDIUMBLOB), new DataTypeResolver.DataTypeEntry(Types.BLOB, MariaDBParser.MEDIUMBLOB),
new DataTypeResolver.DataTypeEntry(Types.BLOB, MySqlParser.LONGBLOB), new DataTypeResolver.DataTypeEntry(Types.BLOB, MariaDBParser.LONGBLOB),
new DataTypeResolver.DataTypeEntry(Types.BOOLEAN, MySqlParser.BOOL), new DataTypeResolver.DataTypeEntry(Types.BOOLEAN, MariaDBParser.BOOL),
new DataTypeResolver.DataTypeEntry(Types.BOOLEAN, MySqlParser.BOOLEAN), new DataTypeResolver.DataTypeEntry(Types.BOOLEAN, MariaDBParser.BOOLEAN),
new DataTypeResolver.DataTypeEntry(Types.BIGINT, MySqlParser.SERIAL))); new DataTypeResolver.DataTypeEntry(Types.BIGINT, MariaDBParser.SERIAL)));
dataTypeResolverBuilder.registerDataTypes(MySqlParser.CollectionDataTypeContext.class.getCanonicalName(), Arrays.asList( dataTypeResolverBuilder.registerDataTypes(MariaDBParser.CollectionDataTypeContext.class.getCanonicalName(), Arrays.asList(
new DataTypeResolver.DataTypeEntry(Types.CHAR, MySqlParser.ENUM).setSuffixTokens(MySqlParser.BINARY), new DataTypeResolver.DataTypeEntry(Types.CHAR, MariaDBParser.ENUM).setSuffixTokens(MariaDBParser.BINARY),
new DataTypeResolver.DataTypeEntry(Types.CHAR, MySqlParser.SET).setSuffixTokens(MySqlParser.BINARY))); new DataTypeResolver.DataTypeEntry(Types.CHAR, MariaDBParser.SET).setSuffixTokens(MariaDBParser.BINARY)));
dataTypeResolverBuilder.registerDataTypes(MySqlParser.SpatialDataTypeContext.class.getCanonicalName(), Arrays.asList( dataTypeResolverBuilder.registerDataTypes(MariaDBParser.SpatialDataTypeContext.class.getCanonicalName(), Arrays.asList(
new DataTypeResolver.DataTypeEntry(Types.OTHER, MySqlParser.GEOMETRYCOLLECTION), new DataTypeResolver.DataTypeEntry(Types.OTHER, MariaDBParser.GEOMETRYCOLLECTION),
new DataTypeResolver.DataTypeEntry(Types.OTHER, MySqlParser.GEOMCOLLECTION), new DataTypeResolver.DataTypeEntry(Types.OTHER, MariaDBParser.GEOMCOLLECTION),
new DataTypeResolver.DataTypeEntry(Types.OTHER, MySqlParser.LINESTRING), new DataTypeResolver.DataTypeEntry(Types.OTHER, MariaDBParser.LINESTRING),
new DataTypeResolver.DataTypeEntry(Types.OTHER, MySqlParser.MULTILINESTRING), new DataTypeResolver.DataTypeEntry(Types.OTHER, MariaDBParser.MULTILINESTRING),
new DataTypeResolver.DataTypeEntry(Types.OTHER, MySqlParser.MULTIPOINT), new DataTypeResolver.DataTypeEntry(Types.OTHER, MariaDBParser.MULTIPOINT),
new DataTypeResolver.DataTypeEntry(Types.OTHER, MySqlParser.MULTIPOLYGON), new DataTypeResolver.DataTypeEntry(Types.OTHER, MariaDBParser.MULTIPOLYGON),
new DataTypeResolver.DataTypeEntry(Types.OTHER, MySqlParser.POINT), new DataTypeResolver.DataTypeEntry(Types.OTHER, MariaDBParser.POINT),
new DataTypeResolver.DataTypeEntry(Types.OTHER, MySqlParser.POLYGON), new DataTypeResolver.DataTypeEntry(Types.OTHER, MariaDBParser.POLYGON),
new DataTypeResolver.DataTypeEntry(Types.OTHER, MySqlParser.JSON), new DataTypeResolver.DataTypeEntry(Types.OTHER, MariaDBParser.JSON),
new DataTypeResolver.DataTypeEntry(Types.OTHER, MySqlParser.GEOMETRY))); new DataTypeResolver.DataTypeEntry(Types.OTHER, MariaDBParser.GEOMETRY)));
dataTypeResolverBuilder.registerDataTypes(MySqlParser.LongVarbinaryDataTypeContext.class.getCanonicalName(), Arrays.asList( dataTypeResolverBuilder.registerDataTypes(MariaDBParser.LongVarbinaryDataTypeContext.class.getCanonicalName(), Arrays.asList(
new DataTypeResolver.DataTypeEntry(Types.BLOB, MySqlParser.LONG) new DataTypeResolver.DataTypeEntry(Types.BLOB, MariaDBParser.LONG)
.setSuffixTokens(MySqlParser.VARBINARY))); .setSuffixTokens(MariaDBParser.VARBINARY)));
dataTypeResolverBuilder.registerDataTypes(MySqlParser.LongVarcharDataTypeContext.class.getCanonicalName(), Arrays.asList( dataTypeResolverBuilder.registerDataTypes(MariaDBParser.LongVarcharDataTypeContext.class.getCanonicalName(), Arrays.asList(
new DataTypeResolver.DataTypeEntry(Types.VARCHAR, MySqlParser.LONG) new DataTypeResolver.DataTypeEntry(Types.VARCHAR, MariaDBParser.LONG)
.setSuffixTokens(MySqlParser.VARCHAR))); .setSuffixTokens(MariaDBParser.VARCHAR)));
return dataTypeResolverBuilder.build(); return dataTypeResolverBuilder.build();
} }
@ -235,23 +238,23 @@ public ConcurrentMap<String, String> charsetNameForDatabase() {
} }
/** /**
* Parse a name from {@link MySqlParser.UidContext}. * Parse a name from {@link MariaDBParser.UidContext}.
* *
* @param uidContext uid context * @param uidContext uid context
* @return name without quotes. * @return name without quotes.
*/ */
public String parseName(MySqlParser.UidContext uidContext) { public String parseName(MariaDBParser.UidContext uidContext) {
return withoutQuotes(uidContext); return withoutQuotes(uidContext);
} }
/** /**
* Parse qualified table identification from {@link MySqlParser.FullIdContext}. * Parse qualified table identification from {@link MariaDBParser.FullIdContext}.
* {@link MariaDbAntlrDdlParser#currentSchema()} will be used if definition of schema name is not part of the context. * {@link MariaDbAntlrDdlParser#currentSchema()} will be used if definition of schema name is not part of the context.
* *
* @param fullIdContext full id context. * @param fullIdContext full id context.
* @return qualified {@link TableId}. * @return qualified {@link TableId}.
*/ */
public TableId parseQualifiedTableId(MySqlParser.FullIdContext fullIdContext) { public TableId parseQualifiedTableId(MariaDBParser.FullIdContext fullIdContext) {
final char[] fullTableName = fullIdContext.getText().toCharArray(); final char[] fullTableName = fullIdContext.getText().toCharArray();
StringBuilder component = new StringBuilder(); StringBuilder component = new StringBuilder();
String dbName = null; String dbName = null;
@ -296,16 +299,16 @@ else if (c == '.' && lastQuote == EMPTY) {
} }
/** /**
* Parse column names for primary index from {@link MySqlParser.IndexColumnNamesContext}. This method will update * Parse column names for primary index from {@link MariaDBParser.IndexColumnNamesContext}. This method will update
* column to be not optional and set primary key column names to table. * column to be not optional and set primary key column names to table.
* *
* @param indexColumnNamesContext primary key index column names context. * @param indexColumnNamesContext primary key index column names context.
* @param tableEditor editor for table where primary key index is parsed. * @param tableEditor editor for table where primary key index is parsed.
*/ */
public void parsePrimaryIndexColumnNames(MySqlParser.IndexColumnNamesContext indexColumnNamesContext, TableEditor tableEditor) { public void parsePrimaryIndexColumnNames(MariaDBParser.IndexColumnNamesContext indexColumnNamesContext, TableEditor tableEditor) {
List<String> pkColumnNames = indexColumnNamesContext.indexColumnName().stream() List<String> pkColumnNames = indexColumnNamesContext.indexColumnName().stream()
.map(indexColumnNameContext -> { .map(indexColumnNameContext -> {
// MySQL does not allow a primary key to have nullable columns, so let's make sure we model that correctly ... // MariaDB does not allow a primary key to have nullable columns, so let's make sure we model that correctly ...
String columnName; String columnName;
if (indexColumnNameContext.uid() != null) { if (indexColumnNameContext.uid() != null) {
columnName = parseName(indexColumnNameContext.uid()); columnName = parseName(indexColumnNameContext.uid());
@ -332,13 +335,13 @@ else if (indexColumnNameContext.STRING_LITERAL() != null) {
} }
/** /**
* Parse column names for unique index from {@link MySqlParser.IndexColumnNamesContext}. This method will set * Parse column names for unique index from {@link MariaDBParser.IndexColumnNamesContext}. This method will set
* unique key column names to table if there are no optional. * unique key column names to table if there are no optional.
* *
* @param indexColumnNamesContext unique key index column names context. * @param indexColumnNamesContext unique key index column names context.
* @param tableEditor editor for table where primary key index is parsed. * @param tableEditor editor for table where primary key index is parsed.
*/ */
public void parseUniqueIndexColumnNames(MySqlParser.IndexColumnNamesContext indexColumnNamesContext, TableEditor tableEditor) { public void parseUniqueIndexColumnNames(MariaDBParser.IndexColumnNamesContext indexColumnNamesContext, TableEditor tableEditor) {
List<Column> indexColumns = getIndexColumns(indexColumnNamesContext, tableEditor); List<Column> indexColumns = getIndexColumns(indexColumnNamesContext, tableEditor);
if (indexColumns.stream().filter(col -> Objects.isNull(col) || col.isOptional()).count() > 0) { if (indexColumns.stream().filter(col -> Objects.isNull(col) || col.isOptional()).count() > 0) {
logger.warn("Skip to set unique index columns {} to primary key which including optional columns", indexColumns); logger.warn("Skip to set unique index columns {} to primary key which including optional columns", indexColumns);
@ -355,11 +358,11 @@ public void parseUniqueIndexColumnNames(MySqlParser.IndexColumnNamesContext inde
* @param tableEditor editor for table where unique index is parsed. * @param tableEditor editor for table where unique index is parsed.
* @return true if the index is to be included; false otherwise. * @return true if the index is to be included; false otherwise.
*/ */
public boolean isTableUniqueIndexIncluded(MySqlParser.IndexColumnNamesContext indexColumnNamesContext, TableEditor tableEditor) { public boolean isTableUniqueIndexIncluded(MariaDBParser.IndexColumnNamesContext indexColumnNamesContext, TableEditor tableEditor) {
return getIndexColumns(indexColumnNamesContext, tableEditor).stream().filter(Objects::isNull).count() == 0; return getIndexColumns(indexColumnNamesContext, tableEditor).stream().filter(Objects::isNull).count() == 0;
} }
private List<Column> getIndexColumns(MySqlParser.IndexColumnNamesContext indexColumnNamesContext, TableEditor tableEditor) { private List<Column> getIndexColumns(MariaDBParser.IndexColumnNamesContext indexColumnNamesContext, TableEditor tableEditor) {
return indexColumnNamesContext.indexColumnName().stream() return indexColumnNamesContext.indexColumnName().stream()
.map(indexColumnNameContext -> { .map(indexColumnNameContext -> {
String columnName; String columnName;
@ -469,4 +472,19 @@ else if (collationNode != null && collationNode.getText() != null) {
return charsetName; return charsetName;
} }
/**
* Signal an alter table event to ddl changes listener.
*
* @param id the table identifier; may not be null
* @param previousId the previous name of the view if it was renamed, or null if it was not renamed
* @param ctx the start of the statement; may not be null
*/
public void signalAlterTable(TableId id, TableId previousId, RenameTableClauseContext ctx) {
final RenameTableContext parent = (RenameTableContext) ctx.getParent();
Interval interval = new Interval(ctx.getParent().start.getStartIndex(),
parent.renameTableClause().get(0).start.getStartIndex() - 1);
String prefix = ctx.getParent().start.getInputStream().getText(interval);
signalAlterTable(id, previousId, prefix + getText(ctx));
}
} }

View File

@ -16,7 +16,7 @@
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser; import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParser; import io.debezium.ddl.parser.mariadb.generated.MariaDBParser;
import io.debezium.relational.Column; import io.debezium.relational.Column;
import io.debezium.relational.ColumnEditor; import io.debezium.relational.ColumnEditor;
import io.debezium.relational.TableId; import io.debezium.relational.TableId;
@ -44,7 +44,7 @@ public AlterTableParserListener(MariaDbAntlrDdlParser parser, List<ParseTreeList
} }
@Override @Override
public void enterAlterTable(MySqlParser.AlterTableContext ctx) { public void enterAlterTable(MariaDBParser.AlterTableContext ctx) {
final TableId tableId = parser.parseQualifiedTableId(ctx.tableName().fullId()); final TableId tableId = parser.parseQualifiedTableId(ctx.tableName().fullId());
if (parser.databaseTables().forTable(tableId) == null) { if (parser.databaseTables().forTable(tableId) == null) {
LOG.debug("Ignoring ALTER TABLE statement for non-captured table {}", tableId); LOG.debug("Ignoring ALTER TABLE statement for non-captured table {}", tableId);
@ -59,7 +59,7 @@ public void enterAlterTable(MySqlParser.AlterTableContext ctx) {
} }
@Override @Override
public void exitAlterTable(MySqlParser.AlterTableContext ctx) { public void exitAlterTable(MariaDBParser.AlterTableContext ctx) {
parser.runIfNotNull(() -> { parser.runIfNotNull(() -> {
listeners.remove(columnDefinitionListener); listeners.remove(columnDefinitionListener);
parser.databaseTables().overwriteTable(tableEditor.create()); parser.databaseTables().overwriteTable(tableEditor.create());
@ -70,7 +70,7 @@ public void exitAlterTable(MySqlParser.AlterTableContext ctx) {
} }
@Override @Override
public void enterAlterByAddColumn(MySqlParser.AlterByAddColumnContext ctx) { public void enterAlterByAddColumn(MariaDBParser.AlterByAddColumnContext ctx) {
parser.runIfNotNull(() -> { parser.runIfNotNull(() -> {
String columnName = parser.parseName(ctx.uid(0)); String columnName = parser.parseName(ctx.uid(0));
ColumnEditor columnEditor = Column.editor().name(columnName); ColumnEditor columnEditor = Column.editor().name(columnName);
@ -81,7 +81,7 @@ public void enterAlterByAddColumn(MySqlParser.AlterByAddColumnContext ctx) {
} }
@Override @Override
public void exitAlterByAddColumn(MySqlParser.AlterByAddColumnContext ctx) { public void exitAlterByAddColumn(MariaDBParser.AlterByAddColumnContext ctx) {
parser.runIfNotNull(() -> { parser.runIfNotNull(() -> {
Column column = columnDefinitionListener.getColumn(); Column column = columnDefinitionListener.getColumn();
tableEditor.addColumn(column); tableEditor.addColumn(column);
@ -100,11 +100,11 @@ else if (ctx.AFTER() != null) {
} }
@Override @Override
public void enterAlterByAddColumns(MySqlParser.AlterByAddColumnsContext ctx) { public void enterAlterByAddColumns(MariaDBParser.AlterByAddColumnsContext ctx) {
// multiple columns are added. Initialize a list of column editors for them // multiple columns are added. Initialize a list of column editors for them
parser.runIfNotNull(() -> { parser.runIfNotNull(() -> {
columnEditors = new ArrayList<>(ctx.uid().size()); columnEditors = new ArrayList<>(ctx.uid().size());
for (MySqlParser.UidContext uidContext : ctx.uid()) { for (MariaDBParser.UidContext uidContext : ctx.uid()) {
String columnName = parser.parseName(uidContext); String columnName = parser.parseName(uidContext);
columnEditors.add(Column.editor().name(columnName)); columnEditors.add(Column.editor().name(columnName));
} }
@ -115,7 +115,7 @@ public void enterAlterByAddColumns(MySqlParser.AlterByAddColumnsContext ctx) {
} }
@Override @Override
public void exitColumnDefinition(MySqlParser.ColumnDefinitionContext ctx) { public void exitColumnDefinition(MariaDBParser.ColumnDefinitionContext ctx) {
parser.runIfNotNull(() -> { parser.runIfNotNull(() -> {
if (columnEditors != null) { if (columnEditors != null) {
// column editor list is not null when a multiple columns are parsed in one statement // column editor list is not null when a multiple columns are parsed in one statement
@ -136,7 +136,7 @@ public void exitColumnDefinition(MySqlParser.ColumnDefinitionContext ctx) {
} }
@Override @Override
public void exitAlterByAddColumns(MySqlParser.AlterByAddColumnsContext ctx) { public void exitAlterByAddColumns(MariaDBParser.AlterByAddColumnsContext ctx) {
parser.runIfNotNull(() -> { parser.runIfNotNull(() -> {
columnEditors.forEach(columnEditor -> tableEditor.addColumn(columnEditor.create())); columnEditors.forEach(columnEditor -> tableEditor.addColumn(columnEditor.create()));
listeners.remove(columnDefinitionListener); listeners.remove(columnDefinitionListener);
@ -145,12 +145,12 @@ public void exitAlterByAddColumns(MySqlParser.AlterByAddColumnsContext ctx) {
} }
@Override @Override
public void enterAlterByChangeColumn(MySqlParser.AlterByChangeColumnContext ctx) { public void enterAlterByChangeColumn(MariaDBParser.AlterByChangeColumnContext ctx) {
parser.runIfNotNull(() -> { parser.runIfNotNull(() -> {
String oldColumnName = parser.parseName(ctx.oldColumn); String oldColumnName = parser.parseName(ctx.oldColumn);
Column existingColumn = tableEditor.columnWithName(oldColumnName); Column existingColumn = tableEditor.columnWithName(oldColumnName);
if (existingColumn != null) { if (existingColumn != null) {
// DBZ-771 unset previously set default value, as it's not kept by MySQL; for any column modifications a new // DBZ-771 unset previously set default value, as it's not kept by MariaDB; for any column modifications a new
// default value (which could be the same) has to be provided by the column_definition which we'll parse later // default value (which could be the same) has to be provided by the column_definition which we'll parse later
// on; only in 8.0 (not yet supported by this parser) columns can be renamed without repeating the full column // on; only in 8.0 (not yet supported by this parser) columns can be renamed without repeating the full column
// definition; so in fact it's arguably not correct to use edit() on the existing column to begin with, but // definition; so in fact it's arguably not correct to use edit() on the existing column to begin with, but
@ -174,7 +174,7 @@ public void enterAlterByChangeColumn(MySqlParser.AlterByChangeColumnContext ctx)
} }
@Override @Override
public void exitAlterByChangeColumn(MySqlParser.AlterByChangeColumnContext ctx) { public void exitAlterByChangeColumn(MariaDBParser.AlterByChangeColumnContext ctx) {
parser.runIfNotNull(() -> { parser.runIfNotNull(() -> {
Column column = columnDefinitionListener.getColumn(); Column column = columnDefinitionListener.getColumn();
tableEditor.addColumn(column); tableEditor.addColumn(column);
@ -195,7 +195,7 @@ else if (ctx.afterColumn != null) {
} }
@Override @Override
public void enterAlterByModifyColumn(MySqlParser.AlterByModifyColumnContext ctx) { public void enterAlterByModifyColumn(MariaDBParser.AlterByModifyColumnContext ctx) {
parser.runIfNotNull(() -> { parser.runIfNotNull(() -> {
String columnName = parser.parseName(ctx.uid(0)); String columnName = parser.parseName(ctx.uid(0));
Column existingColumn = tableEditor.columnWithName(columnName); Column existingColumn = tableEditor.columnWithName(columnName);
@ -214,7 +214,7 @@ public void enterAlterByModifyColumn(MySqlParser.AlterByModifyColumnContext ctx)
} }
@Override @Override
public void exitAlterByModifyColumn(MySqlParser.AlterByModifyColumnContext ctx) { public void exitAlterByModifyColumn(MariaDBParser.AlterByModifyColumnContext ctx) {
parser.runIfNotNull(() -> { parser.runIfNotNull(() -> {
Column column = columnDefinitionListener.getColumn(); Column column = columnDefinitionListener.getColumn();
tableEditor.addColumn(column); tableEditor.addColumn(column);
@ -232,7 +232,7 @@ else if (ctx.AFTER() != null) {
} }
@Override @Override
public void enterAlterByDropColumn(MySqlParser.AlterByDropColumnContext ctx) { public void enterAlterByDropColumn(MariaDBParser.AlterByDropColumnContext ctx) {
parser.runIfNotNull(() -> { parser.runIfNotNull(() -> {
tableEditor.removeColumn(parser.parseName(ctx.uid())); tableEditor.removeColumn(parser.parseName(ctx.uid()));
}, tableEditor); }, tableEditor);
@ -240,7 +240,7 @@ public void enterAlterByDropColumn(MySqlParser.AlterByDropColumnContext ctx) {
} }
@Override @Override
public void enterAlterByRename(MySqlParser.AlterByRenameContext ctx) { public void enterAlterByRename(MariaDBParser.AlterByRenameContext ctx) {
parser.runIfNotNull(() -> { parser.runIfNotNull(() -> {
final TableId newTableId = ctx.uid() != null final TableId newTableId = ctx.uid() != null
? parser.resolveTableId(parser.currentSchema(), parser.parseName(ctx.uid())) ? parser.resolveTableId(parser.currentSchema(), parser.parseName(ctx.uid()))
@ -253,7 +253,7 @@ public void enterAlterByRename(MySqlParser.AlterByRenameContext ctx) {
} }
@Override @Override
public void enterAlterByChangeDefault(MySqlParser.AlterByChangeDefaultContext ctx) { public void enterAlterByChangeDefault(MariaDBParser.AlterByChangeDefaultContext ctx) {
parser.runIfNotNull(() -> { parser.runIfNotNull(() -> {
String columnName = parser.parseName(ctx.uid()); String columnName = parser.parseName(ctx.uid());
Column column = tableEditor.columnWithName(columnName); Column column = tableEditor.columnWithName(columnName);
@ -273,7 +273,7 @@ else if (ctx.DROP() != null) {
} }
@Override @Override
public void exitAlterByChangeDefault(MySqlParser.AlterByChangeDefaultContext ctx) { public void exitAlterByChangeDefault(MariaDBParser.AlterByChangeDefaultContext ctx) {
parser.runIfNotNull(() -> { parser.runIfNotNull(() -> {
tableEditor.updateColumn(defaultValueColumnEditor.create()); tableEditor.updateColumn(defaultValueColumnEditor.create());
listeners.remove(defaultValueListener); listeners.remove(defaultValueListener);
@ -283,7 +283,7 @@ public void exitAlterByChangeDefault(MySqlParser.AlterByChangeDefaultContext ctx
} }
@Override @Override
public void enterAlterByAddPrimaryKey(MySqlParser.AlterByAddPrimaryKeyContext ctx) { public void enterAlterByAddPrimaryKey(MariaDBParser.AlterByAddPrimaryKeyContext ctx) {
parser.runIfNotNull(() -> { parser.runIfNotNull(() -> {
parser.parsePrimaryIndexColumnNames(ctx.indexColumnNames(), tableEditor); parser.parsePrimaryIndexColumnNames(ctx.indexColumnNames(), tableEditor);
}, tableEditor); }, tableEditor);
@ -291,7 +291,7 @@ public void enterAlterByAddPrimaryKey(MySqlParser.AlterByAddPrimaryKeyContext ct
} }
@Override @Override
public void enterAlterByDropPrimaryKey(MySqlParser.AlterByDropPrimaryKeyContext ctx) { public void enterAlterByDropPrimaryKey(MariaDBParser.AlterByDropPrimaryKeyContext ctx) {
parser.runIfNotNull(() -> { parser.runIfNotNull(() -> {
tableEditor.setPrimaryKeyNames(new ArrayList<>()); tableEditor.setPrimaryKeyNames(new ArrayList<>());
}, tableEditor); }, tableEditor);
@ -299,7 +299,7 @@ public void enterAlterByDropPrimaryKey(MySqlParser.AlterByDropPrimaryKeyContext
} }
@Override @Override
public void enterAlterByAddUniqueKey(MySqlParser.AlterByAddUniqueKeyContext ctx) { public void enterAlterByAddUniqueKey(MariaDBParser.AlterByAddUniqueKeyContext ctx) {
parser.runIfNotNull(() -> { parser.runIfNotNull(() -> {
if (!tableEditor.hasPrimaryKey() && parser.isTableUniqueIndexIncluded(ctx.indexColumnNames(), tableEditor)) { if (!tableEditor.hasPrimaryKey() && parser.isTableUniqueIndexIncluded(ctx.indexColumnNames(), tableEditor)) {
// this may eventually get overwritten by a real PK // this may eventually get overwritten by a real PK
@ -310,12 +310,12 @@ public void enterAlterByAddUniqueKey(MySqlParser.AlterByAddUniqueKeyContext ctx)
} }
@Override @Override
public void enterAlterByRenameColumn(MySqlParser.AlterByRenameColumnContext ctx) { public void enterAlterByRenameColumn(MariaDBParser.AlterByRenameColumnContext ctx) {
parser.runIfNotNull(() -> { parser.runIfNotNull(() -> {
String oldColumnName = parser.parseName(ctx.oldColumn); String oldColumnName = parser.parseName(ctx.oldColumn);
Column existingColumn = tableEditor.columnWithName(oldColumnName); Column existingColumn = tableEditor.columnWithName(oldColumnName);
if (existingColumn != null) { if (existingColumn != null) {
// DBZ-771 unset previously set default value, as it's not kept by MySQL; for any column modifications a new // DBZ-771 unset previously set default value, as it's not kept by MariaDB; for any column modifications a new
// default value (which could be the same) has to be provided by the column_definition which we'll parse later // default value (which could be the same) has to be provided by the column_definition which we'll parse later
// on; only in 8.0 (not yet supported by this parser) columns can be renamed without repeating the full column // on; only in 8.0 (not yet supported by this parser) columns can be renamed without repeating the full column
// definition; so in fact it's arguably not correct to use edit() on the existing column to begin with, but // definition; so in fact it's arguably not correct to use edit() on the existing column to begin with, but
@ -335,7 +335,7 @@ public void enterAlterByRenameColumn(MySqlParser.AlterByRenameColumnContext ctx)
} }
@Override @Override
public void exitAlterByRenameColumn(MySqlParser.AlterByRenameColumnContext ctx) { public void exitAlterByRenameColumn(MariaDBParser.AlterByRenameColumnContext ctx) {
parser.runIfNotNull(() -> { parser.runIfNotNull(() -> {
Column column = columnDefinitionListener.getColumn(); Column column = columnDefinitionListener.getColumn();
tableEditor.addColumn(column); tableEditor.addColumn(column);
@ -349,7 +349,7 @@ public void exitAlterByRenameColumn(MySqlParser.AlterByRenameColumnContext ctx)
} }
@Override @Override
public void enterTableOptionComment(MySqlParser.TableOptionCommentContext ctx) { public void enterTableOptionComment(MariaDBParser.TableOptionCommentContext ctx) {
if (!parser.skipComments()) { if (!parser.skipComments()) {
parser.runIfNotNull(() -> { parser.runIfNotNull(() -> {
if (ctx.COMMENT() != null) { if (ctx.COMMENT() != null) {

View File

@ -11,8 +11,8 @@
import io.debezium.antlr.AntlrDdlParser; import io.debezium.antlr.AntlrDdlParser;
import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser; import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParser; import io.debezium.ddl.parser.mariadb.generated.MariaDBParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParserBaseListener; import io.debezium.ddl.parser.mariadb.generated.MariaDBParserBaseListener;
import io.debezium.relational.Column; import io.debezium.relational.Column;
import io.debezium.relational.TableEditor; import io.debezium.relational.TableEditor;
import io.debezium.relational.TableId; import io.debezium.relational.TableId;
@ -23,7 +23,7 @@
* *
* @author Chris Cranford * @author Chris Cranford
*/ */
public class AlterViewParserListener extends MySqlParserBaseListener { public class AlterViewParserListener extends MariaDBParserBaseListener {
private final MariaDbAntlrDdlParser parser; private final MariaDbAntlrDdlParser parser;
private final List<ParseTreeListener> listeners; private final List<ParseTreeListener> listeners;
@ -37,7 +37,7 @@ public AlterViewParserListener(MariaDbAntlrDdlParser parser, List<ParseTreeListe
} }
@Override @Override
public void enterAlterView(MySqlParser.AlterViewContext ctx) { public void enterAlterView(MariaDBParser.AlterViewContext ctx) {
if (!parser.skipViews()) { if (!parser.skipViews()) {
TableId tableId = parser.parseQualifiedTableId(ctx.fullId()); TableId tableId = parser.parseQualifiedTableId(ctx.fullId());
@ -61,7 +61,7 @@ public void enterAlterView(MySqlParser.AlterViewContext ctx) {
} }
@Override @Override
public void exitAlterView(MySqlParser.AlterViewContext ctx) { public void exitAlterView(MariaDBParser.AlterViewContext ctx) {
parser.runIfNotNull(() -> { parser.runIfNotNull(() -> {
tableEditor.addColumns(selectColumnsListener.getSelectedColumns()); tableEditor.addColumns(selectColumnsListener.getSelectedColumns());
// Make sure that the table's character set has been set ... // Make sure that the table's character set has been set ...

View File

@ -18,8 +18,8 @@
import io.debezium.antlr.AntlrDdlParser; import io.debezium.antlr.AntlrDdlParser;
import io.debezium.antlr.DataTypeResolver; import io.debezium.antlr.DataTypeResolver;
import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser; import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParser; import io.debezium.ddl.parser.mariadb.generated.MariaDBParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParserBaseListener; import io.debezium.ddl.parser.mariadb.generated.MariaDBParserBaseListener;
import io.debezium.relational.Column; import io.debezium.relational.Column;
import io.debezium.relational.ColumnEditor; import io.debezium.relational.ColumnEditor;
import io.debezium.relational.TableEditor; import io.debezium.relational.TableEditor;
@ -31,7 +31,7 @@
* *
* @author Chris Cranford * @author Chris Cranford
*/ */
public class ColumnDefinitionParserListener extends MySqlParserBaseListener { public class ColumnDefinitionParserListener extends MariaDBParserBaseListener {
private static final Logger LOGGER = LoggerFactory.getLogger(ColumnDefinitionParserListener.class); private static final Logger LOGGER = LoggerFactory.getLogger(ColumnDefinitionParserListener.class);
@ -70,7 +70,7 @@ public Column getColumn() {
} }
@Override @Override
public void enterColumnDefinition(MySqlParser.ColumnDefinitionContext ctx) { public void enterColumnDefinition(MariaDBParser.ColumnDefinitionContext ctx) {
uniqueColumn = false; uniqueColumn = false;
optionalColumn = new AtomicReference<>(); optionalColumn = new AtomicReference<>();
resolveColumnDataType(ctx.dataType()); resolveColumnDataType(ctx.dataType());
@ -82,7 +82,7 @@ public void enterColumnDefinition(MySqlParser.ColumnDefinitionContext ctx) {
} }
@Override @Override
public void exitColumnDefinition(MySqlParser.ColumnDefinitionContext ctx) { public void exitColumnDefinition(MariaDBParser.ColumnDefinitionContext ctx) {
if (optionalColumn.get() != null) { if (optionalColumn.get() != null) {
columnEditor.optional(optionalColumn.get().booleanValue()); columnEditor.optional(optionalColumn.get().booleanValue());
} }
@ -99,13 +99,13 @@ public void exitColumnDefinition(MySqlParser.ColumnDefinitionContext ctx) {
} }
@Override @Override
public void enterUniqueKeyColumnConstraint(MySqlParser.UniqueKeyColumnConstraintContext ctx) { public void enterUniqueKeyColumnConstraint(MariaDBParser.UniqueKeyColumnConstraintContext ctx) {
uniqueColumn = true; uniqueColumn = true;
super.enterUniqueKeyColumnConstraint(ctx); super.enterUniqueKeyColumnConstraint(ctx);
} }
@Override @Override
public void enterPrimaryKeyColumnConstraint(MySqlParser.PrimaryKeyColumnConstraintContext ctx) { public void enterPrimaryKeyColumnConstraint(MariaDBParser.PrimaryKeyColumnConstraintContext ctx) {
// this rule will be parsed only if no primary key is set in a table // this rule will be parsed only if no primary key is set in a table
// otherwise the statement can't be executed due to multiple primary key error // otherwise the statement can't be executed due to multiple primary key error
optionalColumn.set(Boolean.FALSE); optionalColumn.set(Boolean.FALSE);
@ -115,7 +115,7 @@ public void enterPrimaryKeyColumnConstraint(MySqlParser.PrimaryKeyColumnConstrai
} }
@Override @Override
public void enterCommentColumnConstraint(MySqlParser.CommentColumnConstraintContext ctx) { public void enterCommentColumnConstraint(MariaDBParser.CommentColumnConstraintContext ctx) {
if (!parser.skipComments()) { if (!parser.skipComments()) {
if (ctx.STRING_LITERAL() != null) { if (ctx.STRING_LITERAL() != null) {
columnEditor.comment(parser.withoutQuotes(ctx.STRING_LITERAL().getText())); columnEditor.comment(parser.withoutQuotes(ctx.STRING_LITERAL().getText()));
@ -125,31 +125,31 @@ public void enterCommentColumnConstraint(MySqlParser.CommentColumnConstraintCont
} }
@Override @Override
public void enterNullNotnull(MySqlParser.NullNotnullContext ctx) { public void enterNullNotnull(MariaDBParser.NullNotnullContext ctx) {
optionalColumn.set(Boolean.valueOf(ctx.NOT() == null)); optionalColumn.set(Boolean.valueOf(ctx.NOT() == null));
super.enterNullNotnull(ctx); super.enterNullNotnull(ctx);
} }
@Override @Override
public void enterAutoIncrementColumnConstraint(MySqlParser.AutoIncrementColumnConstraintContext ctx) { public void enterAutoIncrementColumnConstraint(MariaDBParser.AutoIncrementColumnConstraintContext ctx) {
columnEditor.autoIncremented(true); columnEditor.autoIncremented(true);
columnEditor.generated(true); columnEditor.generated(true);
super.enterAutoIncrementColumnConstraint(ctx); super.enterAutoIncrementColumnConstraint(ctx);
} }
@Override @Override
public void enterSerialDefaultColumnConstraint(MySqlParser.SerialDefaultColumnConstraintContext ctx) { public void enterSerialDefaultColumnConstraint(MariaDBParser.SerialDefaultColumnConstraintContext ctx) {
serialColumn(); serialColumn();
super.enterSerialDefaultColumnConstraint(ctx); super.enterSerialDefaultColumnConstraint(ctx);
} }
private void resolveColumnDataType(MySqlParser.DataTypeContext dataTypeContext) { private void resolveColumnDataType(MariaDBParser.DataTypeContext dataTypeContext) {
String charsetName = null; String charsetName = null;
DataType dataType = dataTypeResolver.resolveDataType(dataTypeContext); DataType dataType = dataTypeResolver.resolveDataType(dataTypeContext);
if (dataTypeContext instanceof MySqlParser.StringDataTypeContext) { if (dataTypeContext instanceof MariaDBParser.StringDataTypeContext) {
// Same as LongVarcharDataTypeContext but with dimension handling // Same as LongVarcharDataTypeContext but with dimension handling
MySqlParser.StringDataTypeContext stringDataTypeContext = (MySqlParser.StringDataTypeContext) dataTypeContext; MariaDBParser.StringDataTypeContext stringDataTypeContext = (MariaDBParser.StringDataTypeContext) dataTypeContext;
if (stringDataTypeContext.lengthOneDimension() != null) { if (stringDataTypeContext.lengthOneDimension() != null) {
Integer length = parseLength(stringDataTypeContext.lengthOneDimension().decimalLiteral().getText()); Integer length = parseLength(stringDataTypeContext.lengthOneDimension().decimalLiteral().getText());
@ -158,30 +158,30 @@ private void resolveColumnDataType(MySqlParser.DataTypeContext dataTypeContext)
charsetName = parser.extractCharset(stringDataTypeContext.charsetName(), stringDataTypeContext.collationName()); charsetName = parser.extractCharset(stringDataTypeContext.charsetName(), stringDataTypeContext.collationName());
} }
else if (dataTypeContext instanceof MySqlParser.LongVarcharDataTypeContext) { else if (dataTypeContext instanceof MariaDBParser.LongVarcharDataTypeContext) {
// Same as StringDataTypeContext but without dimension handling // Same as StringDataTypeContext but without dimension handling
MySqlParser.LongVarcharDataTypeContext longVarcharTypeContext = (MySqlParser.LongVarcharDataTypeContext) dataTypeContext; MariaDBParser.LongVarcharDataTypeContext longVarcharTypeContext = (MariaDBParser.LongVarcharDataTypeContext) dataTypeContext;
charsetName = parser.extractCharset(longVarcharTypeContext.charsetName(), longVarcharTypeContext.collationName()); charsetName = parser.extractCharset(longVarcharTypeContext.charsetName(), longVarcharTypeContext.collationName());
} }
else if (dataTypeContext instanceof MySqlParser.NationalStringDataTypeContext) { else if (dataTypeContext instanceof MariaDBParser.NationalStringDataTypeContext) {
MySqlParser.NationalStringDataTypeContext nationalStringDataTypeContext = (MySqlParser.NationalStringDataTypeContext) dataTypeContext; MariaDBParser.NationalStringDataTypeContext nationalStringDataTypeContext = (MariaDBParser.NationalStringDataTypeContext) dataTypeContext;
if (nationalStringDataTypeContext.lengthOneDimension() != null) { if (nationalStringDataTypeContext.lengthOneDimension() != null) {
Integer length = parseLength(nationalStringDataTypeContext.lengthOneDimension().decimalLiteral().getText()); Integer length = parseLength(nationalStringDataTypeContext.lengthOneDimension().decimalLiteral().getText());
columnEditor.length(length); columnEditor.length(length);
} }
} }
else if (dataTypeContext instanceof MySqlParser.NationalVaryingStringDataTypeContext) { else if (dataTypeContext instanceof MariaDBParser.NationalVaryingStringDataTypeContext) {
MySqlParser.NationalVaryingStringDataTypeContext nationalVaryingStringDataTypeContext = (MySqlParser.NationalVaryingStringDataTypeContext) dataTypeContext; MariaDBParser.NationalVaryingStringDataTypeContext nationalVaryingStringDataTypeContext = (MariaDBParser.NationalVaryingStringDataTypeContext) dataTypeContext;
if (nationalVaryingStringDataTypeContext.lengthOneDimension() != null) { if (nationalVaryingStringDataTypeContext.lengthOneDimension() != null) {
Integer length = parseLength(nationalVaryingStringDataTypeContext.lengthOneDimension().decimalLiteral().getText()); Integer length = parseLength(nationalVaryingStringDataTypeContext.lengthOneDimension().decimalLiteral().getText());
columnEditor.length(length); columnEditor.length(length);
} }
} }
else if (dataTypeContext instanceof MySqlParser.DimensionDataTypeContext) { else if (dataTypeContext instanceof MariaDBParser.DimensionDataTypeContext) {
MySqlParser.DimensionDataTypeContext dimensionDataTypeContext = (MySqlParser.DimensionDataTypeContext) dataTypeContext; MariaDBParser.DimensionDataTypeContext dimensionDataTypeContext = (MariaDBParser.DimensionDataTypeContext) dataTypeContext;
Integer length = null; Integer length = null;
Integer scale = null; Integer scale = null;
@ -190,17 +190,17 @@ else if (dataTypeContext instanceof MySqlParser.DimensionDataTypeContext) {
} }
if (dimensionDataTypeContext.lengthTwoDimension() != null) { if (dimensionDataTypeContext.lengthTwoDimension() != null) {
List<MySqlParser.DecimalLiteralContext> decimalLiterals = dimensionDataTypeContext.lengthTwoDimension().decimalLiteral(); List<MariaDBParser.DecimalLiteralContext> decimalLiterals = dimensionDataTypeContext.lengthTwoDimension().decimalLiteral();
length = parseLength(decimalLiterals.get(0).getText()); length = parseLength(decimalLiterals.get(0).getText());
scale = Integer.valueOf(decimalLiterals.get(1).getText()); scale = Integer.valueOf(decimalLiterals.get(1).getText());
} }
if (dimensionDataTypeContext.lengthTwoOptionalDimension() != null) { if (dimensionDataTypeContext.lengthTwoOptionalDimension() != null) {
List<MySqlParser.DecimalLiteralContext> decimalLiterals = dimensionDataTypeContext.lengthTwoOptionalDimension().decimalLiteral(); List<MariaDBParser.DecimalLiteralContext> decimalLiterals = dimensionDataTypeContext.lengthTwoOptionalDimension().decimalLiteral();
if (decimalLiterals.get(0).REAL_LITERAL() != null) { if (decimalLiterals.get(0).REAL_LITERAL() != null) {
String[] digits = DOT.split(decimalLiterals.get(0).getText()); String[] digits = DOT.split(decimalLiterals.get(0).getText());
if (Strings.isNullOrEmpty(digits[0]) || Integer.valueOf(digits[0]) == 0) { if (Strings.isNullOrEmpty(digits[0]) || Integer.valueOf(digits[0]) == 0) {
// Set default value 10 according mysql engine // Set default value 10 according mariadb engine
length = 10; length = 10;
} }
else { else {
@ -222,8 +222,8 @@ else if (dataTypeContext instanceof MySqlParser.DimensionDataTypeContext) {
columnEditor.scale(scale); columnEditor.scale(scale);
} }
} }
else if (dataTypeContext instanceof MySqlParser.CollectionDataTypeContext) { else if (dataTypeContext instanceof MariaDBParser.CollectionDataTypeContext) {
MySqlParser.CollectionDataTypeContext collectionDataTypeContext = (MySqlParser.CollectionDataTypeContext) dataTypeContext; MariaDBParser.CollectionDataTypeContext collectionDataTypeContext = (MariaDBParser.CollectionDataTypeContext) dataTypeContext;
if (collectionDataTypeContext.charsetName() != null) { if (collectionDataTypeContext.charsetName() != null) {
charsetName = collectionDataTypeContext.charsetName().getText(); charsetName = collectionDataTypeContext.charsetName().getText();
} }
@ -242,7 +242,7 @@ else if (dataTypeContext instanceof MySqlParser.CollectionDataTypeContext) {
if (dataTypeName.equals("ENUM") || dataTypeName.equals("SET")) { if (dataTypeName.equals("ENUM") || dataTypeName.equals("SET")) {
// type expression has to be set, because the value converter needs to know the enum or set options // type expression has to be set, because the value converter needs to know the enum or set options
MySqlParser.CollectionDataTypeContext collectionDataTypeContext = (MySqlParser.CollectionDataTypeContext) dataTypeContext; MariaDBParser.CollectionDataTypeContext collectionDataTypeContext = (MariaDBParser.CollectionDataTypeContext) dataTypeContext;
List<String> collectionOptions = collectionDataTypeContext.collectionOptions().collectionOption().stream() List<String> collectionOptions = collectionDataTypeContext.collectionOptions().collectionOption().stream()
.map(AntlrDdlParser::getText) .map(AntlrDdlParser::getText)

View File

@ -7,15 +7,15 @@
import io.debezium.connector.binlog.jdbc.BinlogSystemVariables; import io.debezium.connector.binlog.jdbc.BinlogSystemVariables;
import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser; import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParser; import io.debezium.ddl.parser.mariadb.generated.MariaDBParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParserBaseListener; import io.debezium.ddl.parser.mariadb.generated.MariaDBParserBaseListener;
/** /**
* Parser listener for CREATE DATABASE and ALTER DATABASE statements. * Parser listener for CREATE DATABASE and ALTER DATABASE statements.
* *
* @author Chris Cranford * @author Chris Cranford
*/ */
public class CreateAndAlterDatabaseParserListener extends MySqlParserBaseListener { public class CreateAndAlterDatabaseParserListener extends MariaDBParserBaseListener {
private final MariaDbAntlrDdlParser parser; private final MariaDbAntlrDdlParser parser;
private String databaseName; private String databaseName;
@ -25,25 +25,25 @@ public CreateAndAlterDatabaseParserListener(MariaDbAntlrDdlParser parser) {
} }
@Override @Override
public void enterCreateDatabase(MySqlParser.CreateDatabaseContext ctx) { public void enterCreateDatabase(MariaDBParser.CreateDatabaseContext ctx) {
databaseName = parser.parseName(ctx.uid()); databaseName = parser.parseName(ctx.uid());
super.enterCreateDatabase(ctx); super.enterCreateDatabase(ctx);
} }
@Override @Override
public void exitCreateDatabase(MySqlParser.CreateDatabaseContext ctx) { public void exitCreateDatabase(MariaDBParser.CreateDatabaseContext ctx) {
parser.signalCreateDatabase(databaseName, ctx); parser.signalCreateDatabase(databaseName, ctx);
super.exitCreateDatabase(ctx); super.exitCreateDatabase(ctx);
} }
@Override @Override
public void enterAlterSimpleDatabase(MySqlParser.AlterSimpleDatabaseContext ctx) { public void enterAlterSimpleDatabase(MariaDBParser.AlterSimpleDatabaseContext ctx) {
databaseName = ctx.uid() == null ? parser.currentSchema() : parser.parseName(ctx.uid()); databaseName = ctx.uid() == null ? parser.currentSchema() : parser.parseName(ctx.uid());
super.enterAlterSimpleDatabase(ctx); super.enterAlterSimpleDatabase(ctx);
} }
@Override @Override
public void enterCreateDatabaseOption(MySqlParser.CreateDatabaseOptionContext ctx) { public void enterCreateDatabaseOption(MariaDBParser.CreateDatabaseOptionContext ctx) {
String charsetName = parser.extractCharset(ctx.charsetName(), ctx.collationName()); String charsetName = parser.extractCharset(ctx.charsetName(), ctx.collationName());
if (ctx.charsetName() != null) { if (ctx.charsetName() != null) {
if ("DEFAULT".equalsIgnoreCase(charsetName)) { if ("DEFAULT".equalsIgnoreCase(charsetName)) {

View File

@ -11,7 +11,7 @@
import org.antlr.v4.runtime.tree.ParseTreeListener; import org.antlr.v4.runtime.tree.ParseTreeListener;
import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser; import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParser; import io.debezium.ddl.parser.mariadb.generated.MariaDBParser;
import io.debezium.relational.ColumnEditor; import io.debezium.relational.ColumnEditor;
import io.debezium.relational.Table; import io.debezium.relational.Table;
import io.debezium.relational.TableId; import io.debezium.relational.TableId;
@ -28,7 +28,7 @@ public CreateTableParserListener(MariaDbAntlrDdlParser parser, List<ParseTreeLis
} }
@Override @Override
public void enterColumnCreateTable(MySqlParser.ColumnCreateTableContext ctx) { public void enterColumnCreateTable(MariaDBParser.ColumnCreateTableContext ctx) {
TableId tableId = parser.parseQualifiedTableId(ctx.tableName().fullId()); TableId tableId = parser.parseQualifiedTableId(ctx.tableName().fullId());
if (parser.databaseTables().forTable(tableId) == null) { if (parser.databaseTables().forTable(tableId) == null) {
tableEditor = parser.databaseTables().editOrCreateTable(tableId); tableEditor = parser.databaseTables().editOrCreateTable(tableId);
@ -37,7 +37,7 @@ public void enterColumnCreateTable(MySqlParser.ColumnCreateTableContext ctx) {
} }
@Override @Override
public void exitColumnCreateTable(MySqlParser.ColumnCreateTableContext ctx) { public void exitColumnCreateTable(MariaDBParser.ColumnCreateTableContext ctx) {
parser.runIfNotNull(() -> { parser.runIfNotNull(() -> {
// Make sure that the table's character set has been set ... // Make sure that the table's character set has been set ...
if (!tableEditor.hasDefaultCharsetName()) { if (!tableEditor.hasDefaultCharsetName()) {
@ -65,7 +65,7 @@ public void exitColumnCreateTable(MySqlParser.ColumnCreateTableContext ctx) {
} }
@Override @Override
public void exitCopyCreateTable(MySqlParser.CopyCreateTableContext ctx) { public void exitCopyCreateTable(MariaDBParser.CopyCreateTableContext ctx) {
TableId tableId = parser.parseQualifiedTableId(ctx.tableName(0).fullId()); TableId tableId = parser.parseQualifiedTableId(ctx.tableName(0).fullId());
TableId originalTableId = parser.parseQualifiedTableId(ctx.tableName(1).fullId()); TableId originalTableId = parser.parseQualifiedTableId(ctx.tableName(1).fullId());
Table original = parser.databaseTables().forTable(originalTableId); Table original = parser.databaseTables().forTable(originalTableId);
@ -77,7 +77,7 @@ public void exitCopyCreateTable(MySqlParser.CopyCreateTableContext ctx) {
} }
@Override @Override
public void enterTableOptionCharset(MySqlParser.TableOptionCharsetContext ctx) { public void enterTableOptionCharset(MariaDBParser.TableOptionCharsetContext ctx) {
parser.runIfNotNull(() -> { parser.runIfNotNull(() -> {
if (ctx.charsetName() != null) { if (ctx.charsetName() != null) {
tableEditor.setDefaultCharsetName(parser.withoutQuotes(ctx.charsetName())); tableEditor.setDefaultCharsetName(parser.withoutQuotes(ctx.charsetName()));
@ -87,7 +87,7 @@ public void enterTableOptionCharset(MySqlParser.TableOptionCharsetContext ctx) {
} }
@Override @Override
public void enterTableOptionComment(MySqlParser.TableOptionCommentContext ctx) { public void enterTableOptionComment(MariaDBParser.TableOptionCommentContext ctx) {
if (!parser.skipComments()) { if (!parser.skipComments()) {
parser.runIfNotNull(() -> { parser.runIfNotNull(() -> {
if (ctx.COMMENT() != null) { if (ctx.COMMENT() != null) {

View File

@ -11,8 +11,8 @@
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser; import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParser; import io.debezium.ddl.parser.mariadb.generated.MariaDBParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParserBaseListener; import io.debezium.ddl.parser.mariadb.generated.MariaDBParserBaseListener;
import io.debezium.relational.TableEditor; import io.debezium.relational.TableEditor;
import io.debezium.relational.TableId; import io.debezium.relational.TableId;
import io.debezium.text.ParsingException; import io.debezium.text.ParsingException;
@ -22,7 +22,7 @@
* *
* @author Chris Cranford * @author Chris Cranford
*/ */
public class CreateUniqueIndexParserListener extends MySqlParserBaseListener { public class CreateUniqueIndexParserListener extends MariaDBParserBaseListener {
private final static Logger LOG = LoggerFactory.getLogger(AlterTableParserListener.class); private final static Logger LOG = LoggerFactory.getLogger(AlterTableParserListener.class);
@ -33,7 +33,7 @@ public CreateUniqueIndexParserListener(MariaDbAntlrDdlParser parser) {
} }
@Override @Override
public void enterCreateIndex(MySqlParser.CreateIndexContext ctx) { public void enterCreateIndex(MariaDBParser.CreateIndexContext ctx) {
if (ctx.UNIQUE() != null) { if (ctx.UNIQUE() != null) {
TableId tableId = parser.parseQualifiedTableId(ctx.tableName().fullId()); TableId tableId = parser.parseQualifiedTableId(ctx.tableName().fullId());
if (!parser.getTableFilter().isIncluded(tableId)) { if (!parser.getTableFilter().isIncluded(tableId)) {

View File

@ -10,8 +10,8 @@
import org.antlr.v4.runtime.tree.ParseTreeListener; import org.antlr.v4.runtime.tree.ParseTreeListener;
import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser; import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParser; import io.debezium.ddl.parser.mariadb.generated.MariaDBParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParserBaseListener; import io.debezium.ddl.parser.mariadb.generated.MariaDBParserBaseListener;
import io.debezium.relational.Column; import io.debezium.relational.Column;
import io.debezium.relational.TableEditor; import io.debezium.relational.TableEditor;
@ -20,7 +20,7 @@
* *
* @author Chris Cranford * @author Chris Cranford
*/ */
public class CreateViewParserListener extends MySqlParserBaseListener { public class CreateViewParserListener extends MariaDBParserBaseListener {
private final MariaDbAntlrDdlParser parser; private final MariaDbAntlrDdlParser parser;
private final List<ParseTreeListener> listeners; private final List<ParseTreeListener> listeners;
@ -34,7 +34,7 @@ public CreateViewParserListener(MariaDbAntlrDdlParser parser, List<ParseTreeList
} }
@Override @Override
public void enterCreateView(MySqlParser.CreateViewContext ctx) { public void enterCreateView(MariaDBParser.CreateViewContext ctx) {
if (!parser.skipViews()) { if (!parser.skipViews()) {
tableEditor = parser.databaseTables().editOrCreateTable(parser.parseQualifiedTableId(ctx.fullId())); tableEditor = parser.databaseTables().editOrCreateTable(parser.parseQualifiedTableId(ctx.fullId()));
// create new columns just with specified name for now // create new columns just with specified name for now
@ -50,7 +50,7 @@ public void enterCreateView(MySqlParser.CreateViewContext ctx) {
} }
@Override @Override
public void exitCreateView(MySqlParser.CreateViewContext ctx) { public void exitCreateView(MariaDBParser.CreateViewContext ctx) {
parser.runIfNotNull(() -> { parser.runIfNotNull(() -> {
tableEditor.addColumns(selectColumnsListener.getSelectedColumns()); tableEditor.addColumns(selectColumnsListener.getSelectedColumns());
// Make sure that the table's character set has been set ... // Make sure that the table's character set has been set ...

View File

@ -7,9 +7,9 @@
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import io.debezium.ddl.parser.mysql.generated.MySqlParser.CurrentTimestampContext; import io.debezium.ddl.parser.mariadb.generated.MariaDBParser.CurrentTimestampContext;
import io.debezium.ddl.parser.mysql.generated.MySqlParser.DefaultValueContext; import io.debezium.ddl.parser.mariadb.generated.MariaDBParser.DefaultValueContext;
import io.debezium.ddl.parser.mysql.generated.MySqlParserBaseListener; import io.debezium.ddl.parser.mariadb.generated.MariaDBParserBaseListener;
import io.debezium.relational.ColumnEditor; import io.debezium.relational.ColumnEditor;
/** /**
@ -17,7 +17,7 @@
* *
* @author Chris Cranford * @author Chris Cranford
*/ */
public class DefaultValueParserListener extends MySqlParserBaseListener { public class DefaultValueParserListener extends MariaDBParserBaseListener {
private final ColumnEditor columnEditor; private final ColumnEditor columnEditor;
private final AtomicReference<Boolean> optionalColumn; private final AtomicReference<Boolean> optionalColumn;

View File

@ -6,15 +6,15 @@
package io.debezium.connector.mariadb.antlr.listener; package io.debezium.connector.mariadb.antlr.listener;
import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser; import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParser; import io.debezium.ddl.parser.mariadb.generated.MariaDBParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParserBaseListener; import io.debezium.ddl.parser.mariadb.generated.MariaDBParserBaseListener;
/** /**
* Parser listener for DROP DATABASE statements. * Parser listener for DROP DATABASE statements.
* *
* @author Chris Cranford * @author Chris Cranford
*/ */
public class DropDatabaseParserListener extends MySqlParserBaseListener { public class DropDatabaseParserListener extends MariaDBParserBaseListener {
private final MariaDbAntlrDdlParser parser; private final MariaDbAntlrDdlParser parser;
@ -23,7 +23,7 @@ public DropDatabaseParserListener(MariaDbAntlrDdlParser parser) {
} }
@Override @Override
public void enterDropDatabase(MySqlParser.DropDatabaseContext ctx) { public void enterDropDatabase(MariaDBParser.DropDatabaseContext ctx) {
String databaseName = parser.parseName(ctx.uid()); String databaseName = parser.parseName(ctx.uid());
parser.databaseTables().removeTablesForDatabase(databaseName); parser.databaseTables().removeTablesForDatabase(databaseName);
parser.charsetNameForDatabase().remove(databaseName); parser.charsetNameForDatabase().remove(databaseName);

View File

@ -8,8 +8,8 @@
import org.antlr.v4.runtime.misc.Interval; import org.antlr.v4.runtime.misc.Interval;
import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser; import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParser; import io.debezium.ddl.parser.mariadb.generated.MariaDBParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParserBaseListener; import io.debezium.ddl.parser.mariadb.generated.MariaDBParserBaseListener;
import io.debezium.relational.TableId; import io.debezium.relational.TableId;
/** /**
@ -17,7 +17,7 @@
* *
* @author Chris Cranford * @author Chris Cranford
*/ */
public class DropTableParserListener extends MySqlParserBaseListener { public class DropTableParserListener extends MariaDBParserBaseListener {
private final MariaDbAntlrDdlParser parser; private final MariaDbAntlrDdlParser parser;
@ -26,7 +26,7 @@ public DropTableParserListener(MariaDbAntlrDdlParser parser) {
} }
@Override @Override
public void enterDropTable(MySqlParser.DropTableContext ctx) { public void enterDropTable(MariaDBParser.DropTableContext ctx) {
Interval interval = new Interval(ctx.start.getStartIndex(), ctx.tables().start.getStartIndex() - 1); Interval interval = new Interval(ctx.start.getStartIndex(), ctx.tables().start.getStartIndex() - 1);
String prefix = ctx.start.getInputStream().getText(interval); String prefix = ctx.start.getInputStream().getText(interval);
ctx.tables().tableName().forEach(tableNameContext -> { ctx.tables().tableName().forEach(tableNameContext -> {

View File

@ -6,15 +6,15 @@
package io.debezium.connector.mariadb.antlr.listener; package io.debezium.connector.mariadb.antlr.listener;
import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser; import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParser; import io.debezium.ddl.parser.mariadb.generated.MariaDBParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParserBaseListener; import io.debezium.ddl.parser.mariadb.generated.MariaDBParserBaseListener;
/** /**
* Parser listener for parsing DROP VIEW statements. * Parser listener for parsing DROP VIEW statements.
* *
* @author Chris Cranford * @author Chris Cranford
*/ */
public class DropViewParserListener extends MySqlParserBaseListener { public class DropViewParserListener extends MariaDBParserBaseListener {
private final MariaDbAntlrDdlParser parser; private final MariaDbAntlrDdlParser parser;
@ -23,7 +23,7 @@ public DropViewParserListener(MariaDbAntlrDdlParser parser) {
} }
@Override @Override
public void enterDropView(MySqlParser.DropViewContext ctx) { public void enterDropView(MariaDBParser.DropViewContext ctx) {
if (!parser.skipViews()) { if (!parser.skipViews()) {
ctx.fullId().stream().map(parser::parseQualifiedTableId).forEach(tableId -> { ctx.fullId().stream().map(parser::parseQualifiedTableId).forEach(tableId -> {
parser.databaseTables().removeTable(tableId); parser.databaseTables().removeTable(tableId);

View File

@ -18,8 +18,8 @@
import io.debezium.antlr.AntlrDdlParserListener; import io.debezium.antlr.AntlrDdlParserListener;
import io.debezium.antlr.ProxyParseTreeListenerUtil; import io.debezium.antlr.ProxyParseTreeListenerUtil;
import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser; import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParser; import io.debezium.ddl.parser.mariadb.generated.MariaDBParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParserBaseListener; import io.debezium.ddl.parser.mariadb.generated.MariaDBParserBaseListener;
import io.debezium.text.ParsingException; import io.debezium.text.ParsingException;
/** /**
@ -33,7 +33,7 @@
* *
* @author Chris Cranford * @author Chris Cranford
*/ */
public class MariaDbAntlrDdlParserListener extends MySqlParserBaseListener implements AntlrDdlParserListener { public class MariaDbAntlrDdlParserListener extends MariaDBParserBaseListener implements AntlrDdlParserListener {
private final List<ParseTreeListener> listeners = new CopyOnWriteArrayList<>(); private final List<ParseTreeListener> listeners = new CopyOnWriteArrayList<>();
private final Collection<ParsingException> errors = new ArrayList<>(); private final Collection<ParsingException> errors = new ArrayList<>();
@ -99,7 +99,7 @@ public void visitTerminal(TerminalNode node) {
} }
@Override @Override
public void enterRoutineBody(MySqlParser.RoutineBodyContext ctx) { public void enterRoutineBody(MariaDBParser.RoutineBodyContext ctx) {
// this is a grammar rule for BEGIN ... END part of statements. Skip it. // this is a grammar rule for BEGIN ... END part of statements. Skip it.
skipNodes = true; skipNodes = true;
} }

View File

@ -9,8 +9,8 @@
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser; import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParser; import io.debezium.ddl.parser.mariadb.generated.MariaDBParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParserBaseListener; import io.debezium.ddl.parser.mariadb.generated.MariaDBParserBaseListener;
import io.debezium.relational.TableId; import io.debezium.relational.TableId;
/** /**
@ -18,7 +18,7 @@
* *
* @author Chris Cranford * @author Chris Cranford
*/ */
public class RenameTableParserListener extends MySqlParserBaseListener { public class RenameTableParserListener extends MariaDBParserBaseListener {
private final static Logger LOG = LoggerFactory.getLogger(RenameTableParserListener.class); private final static Logger LOG = LoggerFactory.getLogger(RenameTableParserListener.class);
@ -29,7 +29,7 @@ public RenameTableParserListener(MariaDbAntlrDdlParser parser) {
} }
@Override @Override
public void enterRenameTableClause(MySqlParser.RenameTableClauseContext ctx) { public void enterRenameTableClause(MariaDBParser.RenameTableClauseContext ctx) {
TableId oldTable = parser.parseQualifiedTableId(ctx.tableName(0).fullId()); TableId oldTable = parser.parseQualifiedTableId(ctx.tableName(0).fullId());
TableId newTable = parser.parseQualifiedTableId(ctx.tableName(1).fullId()); TableId newTable = parser.parseQualifiedTableId(ctx.tableName(1).fullId());
if (parser.getTableFilter().isIncluded(oldTable) && !parser.getTableFilter().isIncluded(newTable)) { if (parser.getTableFilter().isIncluded(oldTable) && !parser.getTableFilter().isIncluded(newTable)) {

View File

@ -8,15 +8,15 @@
import io.debezium.connector.binlog.jdbc.BinlogSystemVariables; import io.debezium.connector.binlog.jdbc.BinlogSystemVariables;
import io.debezium.connector.binlog.jdbc.BinlogSystemVariables.BinlogScope; import io.debezium.connector.binlog.jdbc.BinlogSystemVariables.BinlogScope;
import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser; import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParser; import io.debezium.ddl.parser.mariadb.generated.MariaDBParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParserBaseListener; import io.debezium.ddl.parser.mariadb.generated.MariaDBParserBaseListener;
/** /**
* Parser listener for parsing SET statements, which define system variables. * Parser listener for parsing SET statements, which define system variables.
* *
* @author Chris Cranford * @author Chris Cranford
*/ */
public class SetStatementParserListener extends MySqlParserBaseListener { public class SetStatementParserListener extends MariaDBParserBaseListener {
private final MariaDbAntlrDdlParser parser; private final MariaDbAntlrDdlParser parser;
@ -25,12 +25,12 @@ public SetStatementParserListener(MariaDbAntlrDdlParser parser) {
} }
@Override @Override
public void enterSetVariable(MySqlParser.SetVariableContext ctx) { public void enterSetVariable(MariaDBParser.SetVariableContext ctx) {
// If you set multiple system variables, the most recent GLOBAL or SESSION modifier in the statement // If you set multiple system variables, the most recent GLOBAL or SESSION modifier in the statement
// is used for following assignments that have no modifier specified. // is used for following assignments that have no modifier specified.
BinlogScope scope = null; BinlogScope scope = null;
for (int i = 0; i < ctx.variableClause().size(); i++) { for (int i = 0; i < ctx.variableClause().size(); i++) {
MySqlParser.VariableClauseContext variableClauseContext = ctx.variableClause(i); MariaDBParser.VariableClauseContext variableClauseContext = ctx.variableClause(i);
String variableName; String variableName;
if (variableClauseContext.uid() == null) { if (variableClauseContext.uid() == null) {
if (variableClauseContext.GLOBAL_ID() == null) { if (variableClauseContext.GLOBAL_ID() == null) {
@ -88,10 +88,10 @@ else if (variableClauseContext.LOCAL() != null) {
} }
@Override @Override
public void enterSetCharset(MySqlParser.SetCharsetContext ctx) { public void enterSetCharset(MariaDBParser.SetCharsetContext ctx) {
String charsetName = ctx.charsetName() != null ? parser.withoutQuotes(ctx.charsetName()) : parser.currentDatabaseCharset(); String charsetName = ctx.charsetName() != null ? parser.withoutQuotes(ctx.charsetName()) : parser.currentDatabaseCharset();
// Sets variables according to documentation at // Sets variables according to documentation at
// https://dev.mysql.com/doc/refman/8.2/en/set-character-set.html // https://mariadb.com/kb/en/set-character-set/
// Using default scope for these variables, because this type of set statement you cannot specify // Using default scope for these variables, because this type of set statement you cannot specify
// the scope manually // the scope manually
parser.systemVariables().setVariable(BinlogScope.SESSION, BinlogSystemVariables.CHARSET_NAME_CLIENT, charsetName); parser.systemVariables().setVariable(BinlogScope.SESSION, BinlogSystemVariables.CHARSET_NAME_CLIENT, charsetName);
@ -102,10 +102,10 @@ public void enterSetCharset(MySqlParser.SetCharsetContext ctx) {
} }
@Override @Override
public void enterSetNames(MySqlParser.SetNamesContext ctx) { public void enterSetNames(MariaDBParser.SetNamesContext ctx) {
String charsetName = ctx.charsetName() != null ? parser.withoutQuotes(ctx.charsetName()) : parser.currentDatabaseCharset(); String charsetName = ctx.charsetName() != null ? parser.withoutQuotes(ctx.charsetName()) : parser.currentDatabaseCharset();
// Sets variables according to documentation at // Sets variables according to documentation at
// https://dev.mysql.com/doc/refman/8.2/en/set-names.html // https://mariadb.com/kb/en/set-names/
// Using default scope for these variables, because this type of set statement you cannot specify // Using default scope for these variables, because this type of set statement you cannot specify
// the scope manually // the scope manually
parser.systemVariables().setVariable(BinlogScope.SESSION, BinlogSystemVariables.CHARSET_NAME_CLIENT, charsetName); parser.systemVariables().setVariable(BinlogScope.SESSION, BinlogSystemVariables.CHARSET_NAME_CLIENT, charsetName);

View File

@ -10,8 +10,8 @@
import org.antlr.v4.runtime.tree.ParseTreeListener; import org.antlr.v4.runtime.tree.ParseTreeListener;
import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser; import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParser; import io.debezium.ddl.parser.mariadb.generated.MariaDBParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParserBaseListener; import io.debezium.ddl.parser.mariadb.generated.MariaDBParserBaseListener;
import io.debezium.relational.Column; import io.debezium.relational.Column;
import io.debezium.relational.ColumnEditor; import io.debezium.relational.ColumnEditor;
import io.debezium.relational.TableEditor; import io.debezium.relational.TableEditor;
@ -21,7 +21,7 @@
* *
* @author Chris Cranford * @author Chris Cranford
*/ */
public class TableCommonParserListener extends MySqlParserBaseListener { public class TableCommonParserListener extends MariaDBParserBaseListener {
protected final MariaDbAntlrDdlParser parser; protected final MariaDbAntlrDdlParser parser;
protected final List<ParseTreeListener> listeners; protected final List<ParseTreeListener> listeners;
@ -35,16 +35,10 @@ public TableCommonParserListener(MariaDbAntlrDdlParser parser, List<ParseTreeLis
} }
@Override @Override
public void enterColumnDeclaration(MySqlParser.ColumnDeclarationContext ctx) { public void enterColumnDeclaration(MariaDBParser.ColumnDeclarationContext ctx) {
parser.runIfNotNull(() -> { parser.runIfNotNull(() -> {
MySqlParser.FullColumnNameContext fullColumnNameContext = ctx.fullColumnName(); MariaDBParser.UidContext fullColumnNameContext = ctx.uid();
List<MySqlParser.DottedIdContext> dottedIdContextList = fullColumnNameContext.dottedId(); String columnName = parser.parseName(fullColumnNameContext);
MySqlParser.UidContext uidContext = fullColumnNameContext.uid();
if (!dottedIdContextList.isEmpty()) {
uidContext = dottedIdContextList.get(dottedIdContextList.size() - 1).uid();
}
String columnName = parser.parseName(uidContext);
ColumnEditor columnEditor = Column.editor().name(columnName); ColumnEditor columnEditor = Column.editor().name(columnName);
if (columnDefinitionListener == null) { if (columnDefinitionListener == null) {
columnDefinitionListener = new ColumnDefinitionParserListener(tableEditor, columnEditor, parser, listeners); columnDefinitionListener = new ColumnDefinitionParserListener(tableEditor, columnEditor, parser, listeners);
@ -58,7 +52,7 @@ public void enterColumnDeclaration(MySqlParser.ColumnDeclarationContext ctx) {
} }
@Override @Override
public void exitColumnDeclaration(MySqlParser.ColumnDeclarationContext ctx) { public void exitColumnDeclaration(MariaDBParser.ColumnDeclarationContext ctx) {
parser.runIfNotNull(() -> { parser.runIfNotNull(() -> {
tableEditor.addColumn(columnDefinitionListener.getColumn()); tableEditor.addColumn(columnDefinitionListener.getColumn());
}, tableEditor, columnDefinitionListener); }, tableEditor, columnDefinitionListener);
@ -66,7 +60,7 @@ public void exitColumnDeclaration(MySqlParser.ColumnDeclarationContext ctx) {
} }
@Override @Override
public void enterPrimaryKeyTableConstraint(MySqlParser.PrimaryKeyTableConstraintContext ctx) { public void enterPrimaryKeyTableConstraint(MariaDBParser.PrimaryKeyTableConstraintContext ctx) {
parser.runIfNotNull(() -> { parser.runIfNotNull(() -> {
parser.parsePrimaryIndexColumnNames(ctx.indexColumnNames(), tableEditor); parser.parsePrimaryIndexColumnNames(ctx.indexColumnNames(), tableEditor);
}, tableEditor); }, tableEditor);
@ -74,7 +68,7 @@ public void enterPrimaryKeyTableConstraint(MySqlParser.PrimaryKeyTableConstraint
} }
@Override @Override
public void enterUniqueKeyTableConstraint(MySqlParser.UniqueKeyTableConstraintContext ctx) { public void enterUniqueKeyTableConstraint(MariaDBParser.UniqueKeyTableConstraintContext ctx) {
parser.runIfNotNull(() -> { parser.runIfNotNull(() -> {
if (!tableEditor.hasPrimaryKey() && parser.isTableUniqueIndexIncluded(ctx.indexColumnNames(), tableEditor)) { if (!tableEditor.hasPrimaryKey() && parser.isTableUniqueIndexIncluded(ctx.indexColumnNames(), tableEditor)) {
parser.parseUniqueIndexColumnNames(ctx.indexColumnNames(), tableEditor); parser.parseUniqueIndexColumnNames(ctx.indexColumnNames(), tableEditor);

View File

@ -6,8 +6,8 @@
package io.debezium.connector.mariadb.antlr.listener; package io.debezium.connector.mariadb.antlr.listener;
import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser; import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParser; import io.debezium.ddl.parser.mariadb.generated.MariaDBParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParserBaseListener; import io.debezium.ddl.parser.mariadb.generated.MariaDBParserBaseListener;
import io.debezium.relational.TableId; import io.debezium.relational.TableId;
/** /**
@ -15,7 +15,7 @@
* *
* @author Chris Cranford * @author Chris Cranford
*/ */
public class TruncateTableParserListener extends MySqlParserBaseListener { public class TruncateTableParserListener extends MariaDBParserBaseListener {
private final MariaDbAntlrDdlParser parser; private final MariaDbAntlrDdlParser parser;
@ -24,7 +24,7 @@ public TruncateTableParserListener(MariaDbAntlrDdlParser parser) {
} }
@Override @Override
public void enterTruncateTable(MySqlParser.TruncateTableContext ctx) { public void enterTruncateTable(MariaDBParser.TruncateTableContext ctx) {
TableId tableId = parser.parseQualifiedTableId(ctx.tableName().fullId()); TableId tableId = parser.parseQualifiedTableId(ctx.tableName().fullId());
// Be aware the legacy parser is not signaling truncate events // Be aware the legacy parser is not signaling truncate events

View File

@ -8,8 +8,8 @@
import io.debezium.connector.binlog.jdbc.BinlogSystemVariables; import io.debezium.connector.binlog.jdbc.BinlogSystemVariables;
import io.debezium.connector.binlog.jdbc.BinlogSystemVariables.BinlogScope; import io.debezium.connector.binlog.jdbc.BinlogSystemVariables.BinlogScope;
import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser; import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParser; import io.debezium.ddl.parser.mariadb.generated.MariaDBParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParserBaseListener; import io.debezium.ddl.parser.mariadb.generated.MariaDBParserBaseListener;
/** /**
* Parser listener that parses USE statements.<p></p> * Parser listener that parses USE statements.<p></p>
@ -18,7 +18,7 @@
* *
* @author Chris Cranford * @author Chris Cranford
*/ */
public class UseStatementParserListener extends MySqlParserBaseListener { public class UseStatementParserListener extends MariaDBParserBaseListener {
private final MariaDbAntlrDdlParser parser; private final MariaDbAntlrDdlParser parser;
@ -27,7 +27,7 @@ public UseStatementParserListener(MariaDbAntlrDdlParser parser) {
} }
@Override @Override
public void enterUseStatement(MySqlParser.UseStatementContext ctx) { public void enterUseStatement(MariaDBParser.UseStatementContext ctx) {
String dbName = parser.parseName(ctx.uid()); String dbName = parser.parseName(ctx.uid());
parser.setCurrentSchema(dbName); parser.setCurrentSchema(dbName);

View File

@ -12,8 +12,8 @@
import java.util.Map; import java.util.Map;
import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser; import io.debezium.connector.mariadb.antlr.MariaDbAntlrDdlParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParser; import io.debezium.ddl.parser.mariadb.generated.MariaDBParser;
import io.debezium.ddl.parser.mysql.generated.MySqlParserBaseListener; import io.debezium.ddl.parser.mariadb.generated.MariaDBParserBaseListener;
import io.debezium.relational.Column; import io.debezium.relational.Column;
import io.debezium.relational.Table; import io.debezium.relational.Table;
import io.debezium.relational.TableEditor; import io.debezium.relational.TableEditor;
@ -24,7 +24,7 @@
* *
* @author Chris Cranford * @author Chris Cranford
*/ */
public class ViewSelectedColumnsParserListener extends MySqlParserBaseListener { public class ViewSelectedColumnsParserListener extends MariaDBParserBaseListener {
private final MariaDbAntlrDdlParser parser; private final MariaDbAntlrDdlParser parser;
private final TableEditor tableEditor; private final TableEditor tableEditor;
@ -42,7 +42,7 @@ public List<Column> getSelectedColumns() {
} }
@Override @Override
public void exitQuerySpecification(MySqlParser.QuerySpecificationContext ctx) { public void exitQuerySpecification(MariaDBParser.QuerySpecificationContext ctx) {
if (ctx.fromClause() != null) { if (ctx.fromClause() != null) {
parseQuerySpecification(ctx.selectElements()); parseQuerySpecification(ctx.selectElements());
} }
@ -50,7 +50,7 @@ public void exitQuerySpecification(MySqlParser.QuerySpecificationContext ctx) {
} }
@Override @Override
public void exitQuerySpecificationNointo(MySqlParser.QuerySpecificationNointoContext ctx) { public void exitQuerySpecificationNointo(MariaDBParser.QuerySpecificationNointoContext ctx) {
if (ctx.fromClause() != null) { if (ctx.fromClause() != null) {
parseQuerySpecification(ctx.selectElements()); parseQuerySpecification(ctx.selectElements());
} }
@ -58,7 +58,7 @@ public void exitQuerySpecificationNointo(MySqlParser.QuerySpecificationNointoCon
} }
@Override @Override
public void exitAtomTableItem(MySqlParser.AtomTableItemContext ctx) { public void exitAtomTableItem(MariaDBParser.AtomTableItemContext ctx) {
parser.runIfNotNull(() -> { parser.runIfNotNull(() -> {
parseAtomTableItem(ctx, tableByAlias); parseAtomTableItem(ctx, tableByAlias);
}, tableEditor); }, tableEditor);
@ -66,7 +66,7 @@ public void exitAtomTableItem(MySqlParser.AtomTableItemContext ctx) {
} }
@Override @Override
public void exitSubqueryTableItem(MySqlParser.SubqueryTableItemContext ctx) { public void exitSubqueryTableItem(MariaDBParser.SubqueryTableItemContext ctx) {
parser.runIfNotNull(() -> { parser.runIfNotNull(() -> {
// parsing subselect // parsing subselect
String tableAlias = parser.parseName(ctx.uid()); String tableAlias = parser.parseName(ctx.uid());
@ -77,15 +77,15 @@ public void exitSubqueryTableItem(MySqlParser.SubqueryTableItemContext ctx) {
super.exitSubqueryTableItem(ctx); super.exitSubqueryTableItem(ctx);
} }
private void parseQuerySpecification(MySqlParser.SelectElementsContext selectElementsContext) { private void parseQuerySpecification(MariaDBParser.SelectElementsContext selectElementsContext) {
parser.runIfNotNull(() -> { parser.runIfNotNull(() -> {
selectTableEditor = parseSelectElements(selectElementsContext); selectTableEditor = parseSelectElements(selectElementsContext);
}, tableEditor); }, tableEditor);
} }
private void parseAtomTableItem(MySqlParser.TableSourceItemContext ctx, Map<TableId, Table> tableByAlias) { private void parseAtomTableItem(MariaDBParser.TableSourceItemContext ctx, Map<TableId, Table> tableByAlias) {
if (ctx instanceof MySqlParser.AtomTableItemContext) { if (ctx instanceof MariaDBParser.AtomTableItemContext) {
MySqlParser.AtomTableItemContext atomTableItemContext = (MySqlParser.AtomTableItemContext) ctx; MariaDBParser.AtomTableItemContext atomTableItemContext = (MariaDBParser.AtomTableItemContext) ctx;
TableId tableId = parser.parseQualifiedTableId(atomTableItemContext.tableName().fullId()); TableId tableId = parser.parseQualifiedTableId(atomTableItemContext.tableName().fullId());
@ -103,7 +103,7 @@ private void parseAtomTableItem(MySqlParser.TableSourceItemContext ctx, Map<Tabl
} }
} }
private TableEditor parseSelectElements(MySqlParser.SelectElementsContext ctx) { private TableEditor parseSelectElements(MariaDBParser.SelectElementsContext ctx) {
TableEditor table = Table.editor(); TableEditor table = Table.editor();
if (ctx.star != null) { if (ctx.star != null) {
tableByAlias.keySet().forEach(tableId -> { tableByAlias.keySet().forEach(tableId -> {
@ -112,14 +112,14 @@ private TableEditor parseSelectElements(MySqlParser.SelectElementsContext ctx) {
} }
else { else {
ctx.selectElement().forEach(selectElementContext -> { ctx.selectElement().forEach(selectElementContext -> {
if (selectElementContext instanceof MySqlParser.SelectStarElementContext) { if (selectElementContext instanceof MariaDBParser.SelectStarElementContext) {
TableId tableId = parser.parseQualifiedTableId(((MySqlParser.SelectStarElementContext) selectElementContext).fullId()); TableId tableId = parser.parseQualifiedTableId(((MariaDBParser.SelectStarElementContext) selectElementContext).fullId());
Table selectedTable = tableByAlias.get(tableId); Table selectedTable = tableByAlias.get(tableId);
table.addColumns(selectedTable.columns()); table.addColumns(selectedTable.columns());
} }
else if (selectElementContext instanceof MySqlParser.SelectColumnElementContext) { else if (selectElementContext instanceof MariaDBParser.SelectColumnElementContext) {
MySqlParser.SelectColumnElementContext selectColumnElementContext = (MySqlParser.SelectColumnElementContext) selectElementContext; MariaDBParser.SelectColumnElementContext selectColumnElementContext = (MariaDBParser.SelectColumnElementContext) selectElementContext;
MySqlParser.FullColumnNameContext fullColumnNameContext = selectColumnElementContext.fullColumnName(); MariaDBParser.FullColumnNameContext fullColumnNameContext = selectColumnElementContext.fullColumnName();
String schemaName = parser.currentSchema(); String schemaName = parser.currentSchema();
String tableName = null; String tableName = null;
@ -161,12 +161,12 @@ else if (selectElementContext instanceof MySqlParser.SelectColumnElementContext)
return table; return table;
} }
private MySqlParser.TableSourceItemContext getTableSourceItemContext(MySqlParser.TableSourceContext tableSourceContext) { private MariaDBParser.TableSourceItemContext getTableSourceItemContext(MariaDBParser.TableSourceContext tableSourceContext) {
if (tableSourceContext instanceof MySqlParser.TableSourceBaseContext) { if (tableSourceContext instanceof MariaDBParser.TableSourceBaseContext) {
return ((MySqlParser.TableSourceBaseContext) tableSourceContext).tableSourceItem(); return ((MariaDBParser.TableSourceBaseContext) tableSourceContext).tableSourceItem();
} }
else if (tableSourceContext instanceof MySqlParser.TableSourceNestedContext) { else if (tableSourceContext instanceof MariaDBParser.TableSourceNestedContext) {
return ((MySqlParser.TableSourceNestedContext) tableSourceContext).tableSourceItem(); return ((MariaDBParser.TableSourceNestedContext) tableSourceContext).tableSourceItem();
} }
return null; return null;
} }

View File

@ -115,6 +115,22 @@
<goal>test</goal> <goal>test</goal>
</goals> </goals>
</execution> </execution>
<execution>
<id>MariaDB</id>
<configuration>
<verbose>false</verbose>
<showTree>false</showTree>
<entryPoint>root</entryPoint>
<grammarName>MariaDB</grammarName>
<packageName>io.debezium.ddl.parser.mariadb.generated</packageName>
<caseInsensitiveType>UPPER</caseInsensitiveType>
<exampleFiles>src/test/resources/mariadb/examples</exampleFiles>
<enabled>${antlr.tests.enabled}</enabled>
</configuration>
<goals>
<goal>test</goal>
</goals>
</execution>
<execution> <execution>
<id>Oracle</id> <id>Oracle</id>
<configuration> <configuration>

View File

@ -0,0 +1,1376 @@
/*
MariaDB grammar
The MIT License (MIT).
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
// $antlr-format alignTrailingComments true, columnLimit 150, maxEmptyLinesToKeep 1, reflowComments false, useTab false
// $antlr-format allowShortRulesOnASingleLine true, allowShortBlocksOnASingleLine true, minEmptyLines 0, alignSemicolons ownLine
// $antlr-format alignColons trailing, singleLineOverrulesHangingColon true, alignLexerCommands true, alignLabels true, alignTrailers true
lexer grammar MariaDBLexer;
options {
caseInsensitive = true;
}
channels {
MYSQLCOMMENT,
ERRORCHANNEL
}
// SKIP
SPACE : [ \t\r\n]+ -> channel(HIDDEN);
SPEC_MYSQL_COMMENT : '/*!' .+? '*/' -> channel(MYSQLCOMMENT);
COMMENT_INPUT : '/*' .*? '*/' -> channel(HIDDEN);
LINE_COMMENT:
(('--' [ \t]* | '#') ~[\r\n]* ('\r'? '\n' | EOF) | '--' ('\r'? '\n' | EOF)) -> channel(HIDDEN)
;
// Keywords
// Common Keywords
ADD : 'ADD';
ALL : 'ALL';
ALTER : 'ALTER';
ALWAYS : 'ALWAYS';
ANALYZE : 'ANALYZE';
AND : 'AND';
ARRAY : 'ARRAY';
AS : 'AS';
ASC : 'ASC';
ATTRIBUTE : 'ATTRIBUTE';
BEFORE : 'BEFORE';
BETWEEN : 'BETWEEN';
BODY : 'BODY';
BOTH : 'BOTH';
BUCKETS : 'BUCKETS';
BY : 'BY';
CALL : 'CALL';
CASCADE : 'CASCADE';
CASE : 'CASE';
CAST : 'CAST';
CHANGE : 'CHANGE';
CHARACTER : 'CHARACTER';
CHECK : 'CHECK';
COLLATE : 'COLLATE';
COLUMN : 'COLUMN';
CONDITION : 'CONDITION';
CONSTRAINT : 'CONSTRAINT';
CONTINUE : 'CONTINUE';
CONVERT : 'CONVERT';
CREATE : 'CREATE';
CROSS : 'CROSS';
CURRENT : 'CURRENT';
CURRENT_ROLE : 'CURRENT_ROLE';
CURRENT_USER : 'CURRENT_USER';
CURSOR : 'CURSOR';
DATABASE : 'DATABASE';
DATABASES : 'DATABASES';
DECLARE : 'DECLARE';
DEFAULT : 'DEFAULT';
DELAYED : 'DELAYED';
DELETE : 'DELETE';
DESC : 'DESC';
DESCRIBE : 'DESCRIBE';
DETERMINISTIC : 'DETERMINISTIC';
DIAGNOSTICS : 'DIAGNOSTICS';
DISTINCT : 'DISTINCT';
DISTINCTROW : 'DISTINCTROW';
DROP : 'DROP';
EACH : 'EACH';
ELSE : 'ELSE';
ELSEIF : 'ELSEIF';
EMPTY : 'EMPTY';
ENCLOSED : 'ENCLOSED';
ESCAPED : 'ESCAPED';
EXCEPT : 'EXCEPT';
EXISTS : 'EXISTS';
EXIT : 'EXIT';
EXPLAIN : 'EXPLAIN';
FALSE : 'FALSE';
FETCH : 'FETCH';
FOR : 'FOR';
FORCE : 'FORCE';
FOREIGN : 'FOREIGN';
FROM : 'FROM';
FULLTEXT : 'FULLTEXT';
GENERATED : 'GENERATED';
GET : 'GET';
GRANT : 'GRANT';
GROUP : 'GROUP';
HAVING : 'HAVING';
HIGH_PRIORITY : 'HIGH_PRIORITY';
HISTOGRAM : 'HISTOGRAM';
IF : 'IF';
IGNORE : 'IGNORE';
IGNORED : 'IGNORED';
IN : 'IN';
INDEX : 'INDEX';
INFILE : 'INFILE';
INNER : 'INNER';
INOUT : 'INOUT';
INSERT : 'INSERT';
INTERVAL : 'INTERVAL';
INTO : 'INTO';
IS : 'IS';
ITERATE : 'ITERATE';
JOIN : 'JOIN';
KEY : 'KEY';
KEYS : 'KEYS';
KILL : 'KILL';
LATERAL : 'LATERAL';
LEADING : 'LEADING';
LEAVE : 'LEAVE';
LEFT : 'LEFT';
LIKE : 'LIKE';
LIMIT : 'LIMIT';
LINEAR : 'LINEAR';
LINES : 'LINES';
LOAD : 'LOAD';
LOCK : 'LOCK';
LOCKED : 'LOCKED';
LOOP : 'LOOP';
LOW_PRIORITY : 'LOW_PRIORITY';
MASTER_BIND : 'MASTER_BIND';
MASTER_SSL_VERIFY_SERVER_CERT : 'MASTER_SSL_VERIFY_SERVER_CERT';
MATCH : 'MATCH';
MAXVALUE : 'MAXVALUE';
MINVALUE : 'MINVALUE';
MODIFIES : 'MODIFIES';
NATURAL : 'NATURAL';
NOT : 'NOT';
NO_WRITE_TO_BINLOG : 'NO_WRITE_TO_BINLOG';
NULL_LITERAL : 'NULL';
NUMBER : 'NUMBER';
ON : 'ON';
OPTIMIZE : 'OPTIMIZE';
OPTION : 'OPTION';
OPTIONAL : 'OPTIONAL';
OPTIONALLY : 'OPTIONALLY';
OR : 'OR';
ORDER : 'ORDER';
OUT : 'OUT';
OUTER : 'OUTER';
OUTFILE : 'OUTFILE';
OVER : 'OVER';
PARTITION : 'PARTITION';
PRIMARY : 'PRIMARY';
PACKAGE : 'PACKAGE';
PROCEDURE : 'PROCEDURE';
PURGE : 'PURGE';
RANGE : 'RANGE';
READ : 'READ';
READS : 'READS';
REFERENCES : 'REFERENCES';
REGEXP : 'REGEXP';
RELEASE : 'RELEASE';
RENAME : 'RENAME';
REPEAT : 'REPEAT';
REPLACE : 'REPLACE';
REQUIRE : 'REQUIRE';
RESIGNAL : 'RESIGNAL';
RESTRICT : 'RESTRICT';
RETAIN : 'RETAIN';
RETURN : 'RETURN';
REVOKE : 'REVOKE';
RIGHT : 'RIGHT';
RLIKE : 'RLIKE';
SCHEMA : 'SCHEMA';
SCHEMAS : 'SCHEMAS';
SELECT : 'SELECT';
SET : 'SET';
SEPARATOR : 'SEPARATOR';
SHOW : 'SHOW';
SIGNAL : 'SIGNAL';
SKIP_ : 'SKIP';
SPATIAL : 'SPATIAL';
SQL : 'SQL';
SQLEXCEPTION : 'SQLEXCEPTION';
SQLSTATE : 'SQLSTATE';
SQLWARNING : 'SQLWARNING';
SQL_BIG_RESULT : 'SQL_BIG_RESULT';
SQL_CALC_FOUND_ROWS : 'SQL_CALC_FOUND_ROWS';
SQL_SMALL_RESULT : 'SQL_SMALL_RESULT';
SSL : 'SSL';
STACKED : 'STACKED';
STARTING : 'STARTING';
STATEMENT : 'STATEMENT';
STRAIGHT_JOIN : 'STRAIGHT_JOIN';
TABLE : 'TABLE';
TERMINATED : 'TERMINATED';
THEN : 'THEN';
TO : 'TO';
TRAILING : 'TRAILING';
TRIGGER : 'TRIGGER';
TRUE : 'TRUE';
UNDO : 'UNDO';
UNION : 'UNION';
UNIQUE : 'UNIQUE';
UNLOCK : 'UNLOCK';
UNSIGNED : 'UNSIGNED';
UPDATE : 'UPDATE';
USAGE : 'USAGE';
USE : 'USE';
USING : 'USING';
VALUES : 'VALUES';
WHEN : 'WHEN';
WHERE : 'WHERE';
WHILE : 'WHILE';
WITH : 'WITH';
WRITE : 'WRITE';
XOR : 'XOR';
ZEROFILL : 'ZEROFILL';
// DATA TYPE Keywords
TINYINT : 'TINYINT';
SMALLINT : 'SMALLINT';
MEDIUMINT : 'MEDIUMINT';
MIDDLEINT : 'MIDDLEINT';
INT : 'INT';
INT1 : 'INT1';
INT2 : 'INT2';
INT3 : 'INT3';
INT4 : 'INT4';
INT8 : 'INT8';
INTEGER : 'INTEGER';
BIGINT : 'BIGINT';
REAL : 'REAL';
DOUBLE : 'DOUBLE';
PRECISION : 'PRECISION';
FLOAT : 'FLOAT';
FLOAT4 : 'FLOAT4';
FLOAT8 : 'FLOAT8';
DECIMAL : 'DECIMAL';
DEC : 'DEC';
NUMERIC : 'NUMERIC';
DATE : 'DATE';
TIME : 'TIME';
TIMESTAMP : 'TIMESTAMP';
DATETIME : 'DATETIME';
YEAR : 'YEAR';
CHAR : 'CHAR';
VARCHAR : 'VARCHAR';
NVARCHAR : 'NVARCHAR';
NATIONAL : 'NATIONAL';
BINARY : 'BINARY';
VARBINARY : 'VARBINARY';
TINYBLOB : 'TINYBLOB';
BLOB : 'BLOB';
MEDIUMBLOB : 'MEDIUMBLOB';
LONG : 'LONG';
LONGBLOB : 'LONGBLOB';
TINYTEXT : 'TINYTEXT';
TEXT : 'TEXT';
MEDIUMTEXT : 'MEDIUMTEXT';
LONGTEXT : 'LONGTEXT';
ENUM : 'ENUM';
VARYING : 'VARYING';
SERIAL : 'SERIAL';
// Interval type Keywords
YEAR_MONTH : 'YEAR_MONTH';
DAY_HOUR : 'DAY_HOUR';
DAY_MINUTE : 'DAY_MINUTE';
DAY_SECOND : 'DAY_SECOND';
HOUR_MINUTE : 'HOUR_MINUTE';
HOUR_SECOND : 'HOUR_SECOND';
MINUTE_SECOND : 'MINUTE_SECOND';
SECOND_MICROSECOND : 'SECOND_MICROSECOND';
MINUTE_MICROSECOND : 'MINUTE_MICROSECOND';
HOUR_MICROSECOND : 'HOUR_MICROSECOND';
DAY_MICROSECOND : 'DAY_MICROSECOND';
// JSON keywords
JSON_ARRAY : 'JSON_ARRAY';
JSON_ARRAYAGG : 'JSON_ARRAYAGG';
JSON_ARRAY_APPEND : 'JSON_ARRAY_APPEND';
JSON_ARRAY_INSERT : 'JSON_ARRAY_INSERT';
JSON_CONTAINS : 'JSON_CONTAINS';
JSON_CONTAINS_PATH : 'JSON_CONTAINS_PATH';
JSON_DEPTH : 'JSON_DEPTH';
JSON_EXTRACT : 'JSON_EXTRACT';
JSON_INSERT : 'JSON_INSERT';
JSON_KEYS : 'JSON_KEYS';
JSON_LENGTH : 'JSON_LENGTH';
JSON_MERGE : 'JSON_MERGE';
JSON_MERGE_PATCH : 'JSON_MERGE_PATCH';
JSON_MERGE_PRESERVE : 'JSON_MERGE_PRESERVE';
JSON_OBJECT : 'JSON_OBJECT';
JSON_OBJECTAGG : 'JSON_OBJECTAGG';
JSON_OVERLAPS : 'JSON_OVERLAPS';
JSON_PRETTY : 'JSON_PRETTY';
JSON_QUOTE : 'JSON_QUOTE';
JSON_REMOVE : 'JSON_REMOVE';
JSON_REPLACE : 'JSON_REPLACE';
JSON_SCHEMA_VALID : 'JSON_SCHEMA_VALID';
JSON_SCHEMA_VALIDATION_REPORT : 'JSON_SCHEMA_VALIDATION_REPORT';
JSON_SEARCH : 'JSON_SEARCH';
JSON_SET : 'JSON_SET';
JSON_STORAGE_FREE : 'JSON_STORAGE_FREE';
JSON_STORAGE_SIZE : 'JSON_STORAGE_SIZE';
JSON_TABLE : 'JSON_TABLE';
JSON_TYPE : 'JSON_TYPE';
JSON_UNQUOTE : 'JSON_UNQUOTE';
JSON_VALID : 'JSON_VALID';
JSON_VALUE : 'JSON_VALUE';
NESTED : 'NESTED';
ORDINALITY : 'ORDINALITY';
PATH : 'PATH';
// Group function Keywords
AVG : 'AVG';
BIT_AND : 'BIT_AND';
BIT_OR : 'BIT_OR';
BIT_XOR : 'BIT_XOR';
COUNT : 'COUNT';
CUME_DIST : 'CUME_DIST';
DENSE_RANK : 'DENSE_RANK';
FIRST_VALUE : 'FIRST_VALUE';
GROUP_CONCAT : 'GROUP_CONCAT';
LAG : 'LAG';
LAST_VALUE : 'LAST_VALUE';
LEAD : 'LEAD';
MAX : 'MAX';
MIN : 'MIN';
NTILE : 'NTILE';
NTH_VALUE : 'NTH_VALUE';
PERCENT_RANK : 'PERCENT_RANK';
RANK : 'RANK';
ROW_NUMBER : 'ROW_NUMBER';
STD : 'STD';
STDDEV : 'STDDEV';
STDDEV_POP : 'STDDEV_POP';
STDDEV_SAMP : 'STDDEV_SAMP';
SUM : 'SUM';
VAR_POP : 'VAR_POP';
VAR_SAMP : 'VAR_SAMP';
VARIANCE : 'VARIANCE';
// Common function Keywords
CURRENT_DATE : 'CURRENT_DATE';
CURRENT_TIME : 'CURRENT_TIME';
CURRENT_TIMESTAMP : 'CURRENT_TIMESTAMP';
LOCALTIME : 'LOCALTIME';
CURDATE : 'CURDATE';
CURTIME : 'CURTIME';
DATE_ADD : 'DATE_ADD';
DATE_SUB : 'DATE_SUB';
EXTRACT : 'EXTRACT';
LOCALTIMESTAMP : 'LOCALTIMESTAMP';
NOW : 'NOW';
POSITION : 'POSITION';
SUBSTR : 'SUBSTR';
SUBSTRING : 'SUBSTRING';
SYSDATE : 'SYSDATE';
TRIM : 'TRIM';
UTC_DATE : 'UTC_DATE';
UTC_TIME : 'UTC_TIME';
UTC_TIMESTAMP : 'UTC_TIMESTAMP';
// Keywords, but can be ID
// Common Keywords, but can be ID
ACCOUNT : 'ACCOUNT';
ACTION : 'ACTION';
AFTER : 'AFTER';
AGGREGATE : 'AGGREGATE';
ALGORITHM : 'ALGORITHM';
ANY : 'ANY';
AT : 'AT';
AUTHORS : 'AUTHORS';
AUTOCOMMIT : 'AUTOCOMMIT';
AUTOEXTEND_SIZE : 'AUTOEXTEND_SIZE';
AUTO_INCREMENT : 'AUTO_INCREMENT';
AVG_ROW_LENGTH : 'AVG_ROW_LENGTH';
BEGIN : 'BEGIN';
BINLOG : 'BINLOG';
BIT : 'BIT';
BLOCK : 'BLOCK';
BOOL : 'BOOL';
BOOLEAN : 'BOOLEAN';
BTREE : 'BTREE';
CACHE : 'CACHE';
CASCADED : 'CASCADED';
CHAIN : 'CHAIN';
CHANGED : 'CHANGED';
CHANNEL : 'CHANNEL';
CHECKSUM : 'CHECKSUM';
PAGE_CHECKSUM : 'PAGE_CHECKSUM';
CIPHER : 'CIPHER';
CLASS_ORIGIN : 'CLASS_ORIGIN';
CLIENT : 'CLIENT';
CLOSE : 'CLOSE';
CLUSTERING : 'CLUSTERING';
COALESCE : 'COALESCE';
CODE : 'CODE';
COLUMNS : 'COLUMNS';
COLUMN_FORMAT : 'COLUMN_FORMAT';
COLUMN_NAME : 'COLUMN_NAME';
COMMENT : 'COMMENT';
COMMIT : 'COMMIT';
COMPACT : 'COMPACT';
COMPLETION : 'COMPLETION';
COMPRESSED : 'COMPRESSED';
COMPRESSION : 'COMPRESSION' | QUOTE_SYMB? 'COMPRESSION' QUOTE_SYMB?;
CONCURRENT : 'CONCURRENT';
CONNECT : 'CONNECT';
CONNECTION : 'CONNECTION';
CONSISTENT : 'CONSISTENT';
CONSTRAINT_CATALOG : 'CONSTRAINT_CATALOG';
CONSTRAINT_SCHEMA : 'CONSTRAINT_SCHEMA';
CONSTRAINT_NAME : 'CONSTRAINT_NAME';
CONTAINS : 'CONTAINS';
CONTEXT : 'CONTEXT';
CONTRIBUTORS : 'CONTRIBUTORS';
COPY : 'COPY';
CPU : 'CPU';
CYCLE : 'CYCLE';
CURSOR_NAME : 'CURSOR_NAME';
DATA : 'DATA';
DATAFILE : 'DATAFILE';
DEALLOCATE : 'DEALLOCATE';
DEFAULT_AUTH : 'DEFAULT_AUTH';
DEFINER : 'DEFINER';
DELAY_KEY_WRITE : 'DELAY_KEY_WRITE';
DES_KEY_FILE : 'DES_KEY_FILE';
DIRECTORY : 'DIRECTORY';
DISABLE : 'DISABLE';
DISCARD : 'DISCARD';
DISK : 'DISK';
DO : 'DO';
DUMPFILE : 'DUMPFILE';
DUPLICATE : 'DUPLICATE';
DYNAMIC : 'DYNAMIC';
ENABLE : 'ENABLE';
ENCRYPTED : 'ENCRYPTED';
ENCRYPTION : 'ENCRYPTION';
ENCRYPTION_KEY_ID : 'ENCRYPTION_KEY_ID';
END : 'END';
ENDS : 'ENDS';
ENGINE : 'ENGINE';
ENGINES : 'ENGINES';
ERROR : 'ERROR';
ERRORS : 'ERRORS';
ESCAPE : 'ESCAPE';
EVEN : 'EVEN';
EVENT : 'EVENT';
EVENTS : 'EVENTS';
EVERY : 'EVERY';
EXCHANGE : 'EXCHANGE';
EXCLUSIVE : 'EXCLUSIVE';
EXPIRE : 'EXPIRE';
EXPORT : 'EXPORT';
EXTENDED : 'EXTENDED';
EXTENT_SIZE : 'EXTENT_SIZE';
FAILED_LOGIN_ATTEMPTS : 'FAILED_LOGIN_ATTEMPTS';
FAST : 'FAST';
FAULTS : 'FAULTS';
FIELDS : 'FIELDS';
FILE_BLOCK_SIZE : 'FILE_BLOCK_SIZE';
FILTER : 'FILTER';
FIRST : 'FIRST';
FIXED : 'FIXED';
FLUSH : 'FLUSH';
FOLLOWING : 'FOLLOWING';
FOLLOWS : 'FOLLOWS';
FOUND : 'FOUND';
FULL : 'FULL';
FUNCTION : 'FUNCTION';
GENERAL : 'GENERAL';
GLOBAL : 'GLOBAL';
GRANTS : 'GRANTS';
GROUP_REPLICATION : 'GROUP_REPLICATION';
HANDLER : 'HANDLER';
HASH : 'HASH';
HELP : 'HELP';
HISTORY : 'HISTORY';
HOST : 'HOST';
HOSTS : 'HOSTS';
IDENTIFIED : 'IDENTIFIED';
IGNORE_SERVER_IDS : 'IGNORE_SERVER_IDS';
IMPORT : 'IMPORT';
INCREMENT : 'INCREMENT';
INDEXES : 'INDEXES';
INITIAL_SIZE : 'INITIAL_SIZE';
INPLACE : 'INPLACE';
INSERT_METHOD : 'INSERT_METHOD';
INSTALL : 'INSTALL';
INSTANCE : 'INSTANCE';
INSTANT : 'INSTANT';
INVISIBLE : 'INVISIBLE';
INVOKER : 'INVOKER';
IO : 'IO';
IO_THREAD : 'IO_THREAD';
IPC : 'IPC';
ISOLATION : 'ISOLATION';
ISSUER : 'ISSUER';
JSON : 'JSON';
KEY_BLOCK_SIZE : 'KEY_BLOCK_SIZE';
LANGUAGE : 'LANGUAGE';
LAST : 'LAST';
LEAVES : 'LEAVES';
LESS : 'LESS';
LEVEL : 'LEVEL';
LIST : 'LIST';
LOCAL : 'LOCAL';
LOCALES : 'LOCALES';
LOGFILE : 'LOGFILE';
LOGS : 'LOGS';
MASTER : 'MASTER';
MASTER_AUTO_POSITION : 'MASTER_AUTO_POSITION';
MASTER_CONNECT_RETRY : 'MASTER_CONNECT_RETRY';
MASTER_DELAY : 'MASTER_DELAY';
MASTER_HEARTBEAT_PERIOD : 'MASTER_HEARTBEAT_PERIOD';
MASTER_HOST : 'MASTER_HOST';
MASTER_LOG_FILE : 'MASTER_LOG_FILE';
MASTER_LOG_POS : 'MASTER_LOG_POS';
MASTER_PASSWORD : 'MASTER_PASSWORD';
MASTER_PORT : 'MASTER_PORT';
MASTER_RETRY_COUNT : 'MASTER_RETRY_COUNT';
MASTER_SSL : 'MASTER_SSL';
MASTER_SSL_CA : 'MASTER_SSL_CA';
MASTER_SSL_CAPATH : 'MASTER_SSL_CAPATH';
MASTER_SSL_CERT : 'MASTER_SSL_CERT';
MASTER_SSL_CIPHER : 'MASTER_SSL_CIPHER';
MASTER_SSL_CRL : 'MASTER_SSL_CRL';
MASTER_SSL_CRLPATH : 'MASTER_SSL_CRLPATH';
MASTER_SSL_KEY : 'MASTER_SSL_KEY';
MASTER_TLS_VERSION : 'MASTER_TLS_VERSION';
MASTER_USER : 'MASTER_USER';
MAX_CONNECTIONS_PER_HOUR : 'MAX_CONNECTIONS_PER_HOUR';
MAX_QUERIES_PER_HOUR : 'MAX_QUERIES_PER_HOUR';
MAX_ROWS : 'MAX_ROWS';
MAX_SIZE : 'MAX_SIZE';
MAX_UPDATES_PER_HOUR : 'MAX_UPDATES_PER_HOUR';
MAX_USER_CONNECTIONS : 'MAX_USER_CONNECTIONS';
MEDIUM : 'MEDIUM';
MEMBER : 'MEMBER';
MERGE : 'MERGE';
MESSAGE_TEXT : 'MESSAGE_TEXT';
MID : 'MID';
MIGRATE : 'MIGRATE';
MIN_ROWS : 'MIN_ROWS';
MODE : 'MODE';
MODIFY : 'MODIFY';
MUTEX : 'MUTEX';
MYSQL : 'MYSQL';
MYSQL_ERRNO : 'MYSQL_ERRNO';
NAME : 'NAME';
NAMES : 'NAMES';
NCHAR : 'NCHAR';
NEVER : 'NEVER';
NEXT : 'NEXT';
NO : 'NO';
NOCACHE : 'NOCACHE';
NOCOPY : 'NOCOPY';
NOCYCLE : 'NOCYCLE';
NOMAXVALUE : 'NOMAXVALUE';
NOMINVALUE : 'NOMINVALUE';
NOWAIT : 'NOWAIT';
NODEGROUP : 'NODEGROUP';
NONE : 'NONE';
ODBC : 'ODBC';
OFFLINE : 'OFFLINE';
OFFSET : 'OFFSET';
OF : 'OF';
OJ : 'OJ';
OLD_PASSWORD : 'OLD_PASSWORD';
ONE : 'ONE';
ONLINE : 'ONLINE';
ONLY : 'ONLY';
OPEN : 'OPEN';
OPTIMIZER_COSTS : 'OPTIMIZER_COSTS';
OPTIONS : 'OPTIONS';
OWNER : 'OWNER';
PACK_KEYS : 'PACK_KEYS';
PAGE : 'PAGE';
PAGE_COMPRESSED : 'PAGE_COMPRESSED';
PAGE_COMPRESSION_LEVEL : 'PAGE_COMPRESSION_LEVEL';
PARSER : 'PARSER';
PARTIAL : 'PARTIAL';
PARTITIONING : 'PARTITIONING';
PARTITIONS : 'PARTITIONS';
PASSWORD : 'PASSWORD';
PASSWORD_LOCK_TIME : 'PASSWORD_LOCK_TIME';
PHASE : 'PHASE';
PLUGIN : 'PLUGIN';
PLUGIN_DIR : 'PLUGIN_DIR';
PLUGINS : 'PLUGINS';
PORT : 'PORT';
PRECEDES : 'PRECEDES';
PRECEDING : 'PRECEDING';
PREPARE : 'PREPARE';
PRESERVE : 'PRESERVE';
PREV : 'PREV';
PROCESSLIST : 'PROCESSLIST';
PROFILE : 'PROFILE';
PROFILES : 'PROFILES';
PROXY : 'PROXY';
QUERY : 'QUERY';
QUERY_RESPONSE_TIME : 'QUERY_RESPONSE_TIME';
QUICK : 'QUICK';
REBUILD : 'REBUILD';
RECOVER : 'RECOVER';
RECURSIVE : 'RECURSIVE';
REDO_BUFFER_SIZE : 'REDO_BUFFER_SIZE';
REDUNDANT : 'REDUNDANT';
RELAY : 'RELAY';
RELAY_LOG_FILE : 'RELAY_LOG_FILE';
RELAY_LOG_POS : 'RELAY_LOG_POS';
RELAYLOG : 'RELAYLOG';
REMOVE : 'REMOVE';
REORGANIZE : 'REORGANIZE';
REPAIR : 'REPAIR';
REPLICATE_DO_DB : 'REPLICATE_DO_DB';
REPLICATE_DO_TABLE : 'REPLICATE_DO_TABLE';
REPLICATE_IGNORE_DB : 'REPLICATE_IGNORE_DB';
REPLICATE_IGNORE_TABLE : 'REPLICATE_IGNORE_TABLE';
REPLICATE_REWRITE_DB : 'REPLICATE_REWRITE_DB';
REPLICATE_WILD_DO_TABLE : 'REPLICATE_WILD_DO_TABLE';
REPLICATE_WILD_IGNORE_TABLE : 'REPLICATE_WILD_IGNORE_TABLE';
REPLICATION : 'REPLICATION';
RESET : 'RESET';
RESTART : 'RESTART';
RESUME : 'RESUME';
RETURNED_SQLSTATE : 'RETURNED_SQLSTATE';
RETURNING : 'RETURNING';
RETURNS : 'RETURNS';
REUSE : 'REUSE';
ROLE : 'ROLE';
ROLLBACK : 'ROLLBACK';
ROLLUP : 'ROLLUP';
ROTATE : 'ROTATE';
ROW : 'ROW';
ROWS : 'ROWS';
ROW_FORMAT : 'ROW_FORMAT';
RTREE : 'RTREE';
SAVEPOINT : 'SAVEPOINT';
SCHEDULE : 'SCHEDULE';
SECURITY : 'SECURITY';
SEQUENCE : 'SEQUENCE';
SERVER : 'SERVER';
SESSION : 'SESSION';
SHARE : 'SHARE';
SHARED : 'SHARED';
SIGNED : 'SIGNED';
SIMPLE : 'SIMPLE';
SLAVE : 'SLAVE';
SLAVES : 'SLAVES';
SLOW : 'SLOW';
SNAPSHOT : 'SNAPSHOT';
SOCKET : 'SOCKET';
SOME : 'SOME';
SONAME : 'SONAME';
SOUNDS : 'SOUNDS';
SOURCE : 'SOURCE';
SQL_AFTER_GTIDS : 'SQL_AFTER_GTIDS';
SQL_AFTER_MTS_GAPS : 'SQL_AFTER_MTS_GAPS';
SQL_BEFORE_GTIDS : 'SQL_BEFORE_GTIDS';
SQL_BUFFER_RESULT : 'SQL_BUFFER_RESULT';
SQL_CACHE : 'SQL_CACHE';
SQL_NO_CACHE : 'SQL_NO_CACHE';
SQL_THREAD : 'SQL_THREAD';
START : 'START';
STARTS : 'STARTS';
STATS_AUTO_RECALC : 'STATS_AUTO_RECALC';
STATS_PERSISTENT : 'STATS_PERSISTENT';
STATS_SAMPLE_PAGES : 'STATS_SAMPLE_PAGES';
STATUS : 'STATUS';
STOP : 'STOP';
STORAGE : 'STORAGE';
STORED : 'STORED';
STRING : 'STRING';
SUBCLASS_ORIGIN : 'SUBCLASS_ORIGIN';
SUBJECT : 'SUBJECT';
SUBPARTITION : 'SUBPARTITION';
SUBPARTITIONS : 'SUBPARTITIONS';
SUSPEND : 'SUSPEND';
SWAPS : 'SWAPS';
SWITCHES : 'SWITCHES';
TABLE_NAME : 'TABLE_NAME';
TABLESPACE : 'TABLESPACE';
TABLE_TYPE : 'TABLE_TYPE';
TEMPORARY : 'TEMPORARY';
TEMPTABLE : 'TEMPTABLE';
THAN : 'THAN';
TRADITIONAL : 'TRADITIONAL';
TRANSACTION : 'TRANSACTION';
TRANSACTIONAL : 'TRANSACTIONAL';
TRIGGERS : 'TRIGGERS';
TRUNCATE : 'TRUNCATE';
TYPES : 'TYPES';
UNBOUNDED : 'UNBOUNDED';
UNDEFINED : 'UNDEFINED';
UNDOFILE : 'UNDOFILE';
UNDO_BUFFER_SIZE : 'UNDO_BUFFER_SIZE';
UNINSTALL : 'UNINSTALL';
UNKNOWN : 'UNKNOWN';
UNTIL : 'UNTIL';
UPGRADE : 'UPGRADE';
USER : 'USER';
USE_FRM : 'USE_FRM';
USER_RESOURCES : 'USER_RESOURCES';
VALIDATION : 'VALIDATION';
VALUE : 'VALUE';
VARIABLES : 'VARIABLES';
VIEW : 'VIEW';
VIRTUAL : 'VIRTUAL';
VISIBLE : 'VISIBLE';
WAIT : 'WAIT';
WARNINGS : 'WARNINGS';
WINDOW : 'WINDOW';
WITHOUT : 'WITHOUT';
WORK : 'WORK';
WRAPPER : 'WRAPPER';
WSREP_MEMBERSHIP : 'WSREP_MEMBERSHIP';
WSREP_STATUS : 'WSREP_STATUS';
X509 : 'X509';
XA : 'XA';
XML : 'XML';
YES : 'YES';
// Date format Keywords
EUR : 'EUR';
USA : 'USA';
JIS : 'JIS';
ISO : 'ISO';
INTERNAL : 'INTERNAL';
// Interval type Keywords
QUARTER : 'QUARTER';
MONTH : 'MONTH';
DAY : 'DAY';
HOUR : 'HOUR';
MINUTE : 'MINUTE';
WEEK : 'WEEK';
SECOND : 'SECOND';
MICROSECOND : 'MICROSECOND';
// userstat plugin Keywords
USER_STATISTICS : 'USER_STATISTICS';
CLIENT_STATISTICS : 'CLIENT_STATISTICS';
INDEX_STATISTICS : 'INDEX_STATISTICS';
TABLE_STATISTICS : 'TABLE_STATISTICS';
// PRIVILEGES
ADMIN : 'ADMIN';
APPLICATION_PASSWORD_ADMIN : 'APPLICATION_PASSWORD_ADMIN';
AUDIT_ADMIN : 'AUDIT_ADMIN';
BACKUP_ADMIN : 'BACKUP_ADMIN';
BINLOG_ADMIN : 'BINLOG_ADMIN';
BINLOG_ENCRYPTION_ADMIN : 'BINLOG_ENCRYPTION_ADMIN';
CLONE_ADMIN : 'CLONE_ADMIN';
CONNECTION_ADMIN : 'CONNECTION_ADMIN';
ENCRYPTION_KEY_ADMIN : 'ENCRYPTION_KEY_ADMIN';
EXECUTE : 'EXECUTE';
FILE : 'FILE';
FIREWALL_ADMIN : 'FIREWALL_ADMIN';
FIREWALL_USER : 'FIREWALL_USER';
FLUSH_OPTIMIZER_COSTS : 'FLUSH_OPTIMIZER_COSTS';
FLUSH_STATUS : 'FLUSH_STATUS';
FLUSH_TABLES : 'FLUSH_TABLES';
FLUSH_USER_RESOURCES : 'FLUSH_USER_RESOURCES';
GROUP_REPLICATION_ADMIN : 'GROUP_REPLICATION_ADMIN';
INNODB_REDO_LOG_ARCHIVE : 'INNODB_REDO_LOG_ARCHIVE';
INNODB_REDO_LOG_ENABLE : 'INNODB_REDO_LOG_ENABLE';
INVOKE : 'INVOKE';
LAMBDA : 'LAMBDA';
NDB_STORED_USER : 'NDB_STORED_USER';
PASSWORDLESS_USER_ADMIN : 'PASSWORDLESS_USER_ADMIN';
PERSIST_RO_VARIABLES_ADMIN : 'PERSIST_RO_VARIABLES_ADMIN';
PRIVILEGES : 'PRIVILEGES';
PROCESS : 'PROCESS';
RELOAD : 'RELOAD';
REPLICATION_APPLIER : 'REPLICATION_APPLIER';
REPLICATION_SLAVE_ADMIN : 'REPLICATION_SLAVE_ADMIN';
RESOURCE_GROUP_ADMIN : 'RESOURCE_GROUP_ADMIN';
RESOURCE_GROUP_USER : 'RESOURCE_GROUP_USER';
ROLE_ADMIN : 'ROLE_ADMIN';
ROUTINE : 'ROUTINE';
S3 : 'S3';
SERVICE_CONNECTION_ADMIN : 'SERVICE_CONNECTION_ADMIN';
SESSION_VARIABLES_ADMIN : QUOTE_SYMB? 'SESSION_VARIABLES_ADMIN' QUOTE_SYMB?;
SET_USER_ID : 'SET_USER_ID';
SHOW_ROUTINE : 'SHOW_ROUTINE';
SHUTDOWN : 'SHUTDOWN';
SUPER : 'SUPER';
SYSTEM_VARIABLES_ADMIN : 'SYSTEM_VARIABLES_ADMIN';
TABLES : 'TABLES';
TABLE_ENCRYPTION_ADMIN : 'TABLE_ENCRYPTION_ADMIN';
VERSION_TOKEN_ADMIN : 'VERSION_TOKEN_ADMIN';
XA_RECOVER_ADMIN : 'XA_RECOVER_ADMIN';
// Charsets
ARMSCII8 : 'ARMSCII8';
ASCII : 'ASCII';
BIG5 : 'BIG5';
CP1250 : 'CP1250';
CP1251 : 'CP1251';
CP1256 : 'CP1256';
CP1257 : 'CP1257';
CP850 : 'CP850';
CP852 : 'CP852';
CP866 : 'CP866';
CP932 : 'CP932';
DEC8 : 'DEC8';
EUCJPMS : 'EUCJPMS';
EUCKR : 'EUCKR';
GB18030 : 'GB18030';
GB2312 : 'GB2312';
GBK : 'GBK';
GEOSTD8 : 'GEOSTD8';
GREEK : 'GREEK';
HEBREW : 'HEBREW';
HP8 : 'HP8';
KEYBCS2 : 'KEYBCS2';
KOI8R : 'KOI8R';
KOI8U : 'KOI8U';
LATIN1 : 'LATIN1';
LATIN2 : 'LATIN2';
LATIN5 : 'LATIN5';
LATIN7 : 'LATIN7';
MACCE : 'MACCE';
MACROMAN : 'MACROMAN';
SJIS : 'SJIS';
SWE7 : 'SWE7';
TIS620 : 'TIS620';
UCS2 : 'UCS2';
UJIS : 'UJIS';
UTF16 : 'UTF16';
UTF16LE : 'UTF16LE';
UTF32 : 'UTF32';
UTF8 : 'UTF8';
UTF8MB3 : 'UTF8MB3';
UTF8MB4 : 'UTF8MB4';
// DB Engines
ARCHIVE : 'ARCHIVE';
BLACKHOLE : 'BLACKHOLE';
CSV : 'CSV';
FEDERATED : 'FEDERATED';
INNODB : 'INNODB';
MEMORY : 'MEMORY';
MRG_MYISAM : 'MRG_MYISAM';
MYISAM : 'MYISAM';
NDB : 'NDB';
NDBCLUSTER : 'NDBCLUSTER';
PERFORMANCE_SCHEMA : 'PERFORMANCE_SCHEMA';
TOKUDB : 'TOKUDB';
// Transaction Levels
REPEATABLE : 'REPEATABLE';
COMMITTED : 'COMMITTED';
UNCOMMITTED : 'UNCOMMITTED';
SERIALIZABLE : 'SERIALIZABLE';
// Spatial data types
GEOMETRYCOLLECTION : 'GEOMETRYCOLLECTION';
GEOMCOLLECTION : 'GEOMCOLLECTION';
GEOMETRY : 'GEOMETRY';
LINESTRING : 'LINESTRING';
MULTILINESTRING : 'MULTILINESTRING';
MULTIPOINT : 'MULTIPOINT';
MULTIPOLYGON : 'MULTIPOLYGON';
POINT : 'POINT';
POLYGON : 'POLYGON';
// Common function names
ABS : 'ABS';
ACOS : 'ACOS';
ADDDATE : 'ADDDATE';
ADDTIME : 'ADDTIME';
AES_DECRYPT : 'AES_DECRYPT';
AES_ENCRYPT : 'AES_ENCRYPT';
AREA : 'AREA';
ASBINARY : 'ASBINARY';
ASIN : 'ASIN';
ASTEXT : 'ASTEXT';
ASWKB : 'ASWKB';
ASWKT : 'ASWKT';
ASYMMETRIC_DECRYPT : 'ASYMMETRIC_DECRYPT';
ASYMMETRIC_DERIVE : 'ASYMMETRIC_DERIVE';
ASYMMETRIC_ENCRYPT : 'ASYMMETRIC_ENCRYPT';
ASYMMETRIC_SIGN : 'ASYMMETRIC_SIGN';
ASYMMETRIC_VERIFY : 'ASYMMETRIC_VERIFY';
ATAN : 'ATAN';
ATAN2 : 'ATAN2';
BENCHMARK : 'BENCHMARK';
BIN : 'BIN';
BIT_COUNT : 'BIT_COUNT';
BIT_LENGTH : 'BIT_LENGTH';
BUFFER : 'BUFFER';
CATALOG_NAME : 'CATALOG_NAME';
CEIL : 'CEIL';
CEILING : 'CEILING';
CENTROID : 'CENTROID';
CHARACTER_LENGTH : 'CHARACTER_LENGTH';
CHARSET : 'CHARSET';
CHAR_LENGTH : 'CHAR_LENGTH';
COERCIBILITY : 'COERCIBILITY';
COLLATION : 'COLLATION';
COMPRESS : 'COMPRESS';
CONCAT : 'CONCAT';
CONCAT_WS : 'CONCAT_WS';
CONNECTION_ID : 'CONNECTION_ID';
CONV : 'CONV';
CONVERT_TZ : 'CONVERT_TZ';
COS : 'COS';
COT : 'COT';
CRC32 : 'CRC32';
CREATE_ASYMMETRIC_PRIV_KEY : 'CREATE_ASYMMETRIC_PRIV_KEY';
CREATE_ASYMMETRIC_PUB_KEY : 'CREATE_ASYMMETRIC_PUB_KEY';
CREATE_DH_PARAMETERS : 'CREATE_DH_PARAMETERS';
CREATE_DIGEST : 'CREATE_DIGEST';
CROSSES : 'CROSSES';
DATEDIFF : 'DATEDIFF';
DATE_FORMAT : 'DATE_FORMAT';
DAYNAME : 'DAYNAME';
DAYOFMONTH : 'DAYOFMONTH';
DAYOFWEEK : 'DAYOFWEEK';
DAYOFYEAR : 'DAYOFYEAR';
DECODE : 'DECODE';
DEGREES : 'DEGREES';
DES_DECRYPT : 'DES_DECRYPT';
DES_ENCRYPT : 'DES_ENCRYPT';
DIMENSION : 'DIMENSION';
DISJOINT : 'DISJOINT';
ELT : 'ELT';
ENCODE : 'ENCODE';
ENCRYPT : 'ENCRYPT';
ENDPOINT : 'ENDPOINT';
ENGINE_ATTRIBUTE : 'ENGINE_ATTRIBUTE';
ENVELOPE : 'ENVELOPE';
EQUALS : 'EQUALS';
EXP : 'EXP';
EXPORT_SET : 'EXPORT_SET';
EXTERIORRING : 'EXTERIORRING';
EXTRACTVALUE : 'EXTRACTVALUE';
FIELD : 'FIELD';
FIND_IN_SET : 'FIND_IN_SET';
FLOOR : 'FLOOR';
FORMAT : 'FORMAT';
FOUND_ROWS : 'FOUND_ROWS';
FROM_BASE64 : 'FROM_BASE64';
FROM_DAYS : 'FROM_DAYS';
FROM_UNIXTIME : 'FROM_UNIXTIME';
GEOMCOLLFROMTEXT : 'GEOMCOLLFROMTEXT';
GEOMCOLLFROMWKB : 'GEOMCOLLFROMWKB';
GEOMETRYCOLLECTIONFROMTEXT : 'GEOMETRYCOLLECTIONFROMTEXT';
GEOMETRYCOLLECTIONFROMWKB : 'GEOMETRYCOLLECTIONFROMWKB';
GEOMETRYFROMTEXT : 'GEOMETRYFROMTEXT';
GEOMETRYFROMWKB : 'GEOMETRYFROMWKB';
GEOMETRYN : 'GEOMETRYN';
GEOMETRYTYPE : 'GEOMETRYTYPE';
GEOMFROMTEXT : 'GEOMFROMTEXT';
GEOMFROMWKB : 'GEOMFROMWKB';
GET_FORMAT : 'GET_FORMAT';
GET_LOCK : 'GET_LOCK';
GLENGTH : 'GLENGTH';
GREATEST : 'GREATEST';
GTID_SUBSET : 'GTID_SUBSET';
GTID_SUBTRACT : 'GTID_SUBTRACT';
HEX : 'HEX';
IFNULL : 'IFNULL';
INET6_ATON : 'INET6_ATON';
INET6_NTOA : 'INET6_NTOA';
INET_ATON : 'INET_ATON';
INET_NTOA : 'INET_NTOA';
INSTR : 'INSTR';
INTERIORRINGN : 'INTERIORRINGN';
INTERSECTS : 'INTERSECTS';
ISCLOSED : 'ISCLOSED';
ISEMPTY : 'ISEMPTY';
ISNULL : 'ISNULL';
ISSIMPLE : 'ISSIMPLE';
IS_FREE_LOCK : 'IS_FREE_LOCK';
IS_IPV4 : 'IS_IPV4';
IS_IPV4_COMPAT : 'IS_IPV4_COMPAT';
IS_IPV4_MAPPED : 'IS_IPV4_MAPPED';
IS_IPV6 : 'IS_IPV6';
IS_USED_LOCK : 'IS_USED_LOCK';
LAST_INSERT_ID : 'LAST_INSERT_ID';
LCASE : 'LCASE';
LEAST : 'LEAST';
LENGTH : 'LENGTH';
LINEFROMTEXT : 'LINEFROMTEXT';
LINEFROMWKB : 'LINEFROMWKB';
LINESTRINGFROMTEXT : 'LINESTRINGFROMTEXT';
LINESTRINGFROMWKB : 'LINESTRINGFROMWKB';
LN : 'LN';
LOAD_FILE : 'LOAD_FILE';
LOCATE : 'LOCATE';
LOG : 'LOG';
LOG10 : 'LOG10';
LOG2 : 'LOG2';
LOWER : 'LOWER';
LPAD : 'LPAD';
LTRIM : 'LTRIM';
MAKEDATE : 'MAKEDATE';
MAKETIME : 'MAKETIME';
MAKE_SET : 'MAKE_SET';
MASTER_POS_WAIT : 'MASTER_POS_WAIT';
MBRCONTAINS : 'MBRCONTAINS';
MBRDISJOINT : 'MBRDISJOINT';
MBREQUAL : 'MBREQUAL';
MBRINTERSECTS : 'MBRINTERSECTS';
MBROVERLAPS : 'MBROVERLAPS';
MBRTOUCHES : 'MBRTOUCHES';
MBRWITHIN : 'MBRWITHIN';
MD5 : 'MD5';
MLINEFROMTEXT : 'MLINEFROMTEXT';
MLINEFROMWKB : 'MLINEFROMWKB';
MONTHNAME : 'MONTHNAME';
MPOINTFROMTEXT : 'MPOINTFROMTEXT';
MPOINTFROMWKB : 'MPOINTFROMWKB';
MPOLYFROMTEXT : 'MPOLYFROMTEXT';
MPOLYFROMWKB : 'MPOLYFROMWKB';
MULTILINESTRINGFROMTEXT : 'MULTILINESTRINGFROMTEXT';
MULTILINESTRINGFROMWKB : 'MULTILINESTRINGFROMWKB';
MULTIPOINTFROMTEXT : 'MULTIPOINTFROMTEXT';
MULTIPOINTFROMWKB : 'MULTIPOINTFROMWKB';
MULTIPOLYGONFROMTEXT : 'MULTIPOLYGONFROMTEXT';
MULTIPOLYGONFROMWKB : 'MULTIPOLYGONFROMWKB';
NAME_CONST : 'NAME_CONST';
NULLIF : 'NULLIF';
NUMGEOMETRIES : 'NUMGEOMETRIES';
NUMINTERIORRINGS : 'NUMINTERIORRINGS';
NUMPOINTS : 'NUMPOINTS';
OCT : 'OCT';
OCTET_LENGTH : 'OCTET_LENGTH';
ORD : 'ORD';
OVERLAPS : 'OVERLAPS';
PERIOD_ADD : 'PERIOD_ADD';
PERIOD_DIFF : 'PERIOD_DIFF';
PI : 'PI';
POINTFROMTEXT : 'POINTFROMTEXT';
POINTFROMWKB : 'POINTFROMWKB';
POINTN : 'POINTN';
POLYFROMTEXT : 'POLYFROMTEXT';
POLYFROMWKB : 'POLYFROMWKB';
POLYGONFROMTEXT : 'POLYGONFROMTEXT';
POLYGONFROMWKB : 'POLYGONFROMWKB';
POW : 'POW';
POWER : 'POWER';
QUOTE : 'QUOTE';
RADIANS : 'RADIANS';
RAND : 'RAND';
RANDOM_BYTES : 'RANDOM_BYTES';
RELEASE_LOCK : 'RELEASE_LOCK';
REVERSE : 'REVERSE';
ROUND : 'ROUND';
ROW_COUNT : 'ROW_COUNT';
RPAD : 'RPAD';
RTRIM : 'RTRIM';
SEC_TO_TIME : 'SEC_TO_TIME';
SECONDARY_ENGINE_ATTRIBUTE : 'SECONDARY_ENGINE_ATTRIBUTE';
SESSION_USER : 'SESSION_USER';
SHA : 'SHA';
SHA1 : 'SHA1';
SHA2 : 'SHA2';
SCHEMA_NAME : 'SCHEMA_NAME';
SIGN : 'SIGN';
SIN : 'SIN';
SLEEP : 'SLEEP';
SOUNDEX : 'SOUNDEX';
SQL_THREAD_WAIT_AFTER_GTIDS : 'SQL_THREAD_WAIT_AFTER_GTIDS';
SQRT : 'SQRT';
SRID : 'SRID';
STARTPOINT : 'STARTPOINT';
STRCMP : 'STRCMP';
STR_TO_DATE : 'STR_TO_DATE';
ST_AREA : 'ST_AREA';
ST_ASBINARY : 'ST_ASBINARY';
ST_ASTEXT : 'ST_ASTEXT';
ST_ASWKB : 'ST_ASWKB';
ST_ASWKT : 'ST_ASWKT';
ST_BUFFER : 'ST_BUFFER';
ST_CENTROID : 'ST_CENTROID';
ST_CONTAINS : 'ST_CONTAINS';
ST_CROSSES : 'ST_CROSSES';
ST_DIFFERENCE : 'ST_DIFFERENCE';
ST_DIMENSION : 'ST_DIMENSION';
ST_DISJOINT : 'ST_DISJOINT';
ST_DISTANCE : 'ST_DISTANCE';
ST_ENDPOINT : 'ST_ENDPOINT';
ST_ENVELOPE : 'ST_ENVELOPE';
ST_EQUALS : 'ST_EQUALS';
ST_EXTERIORRING : 'ST_EXTERIORRING';
ST_GEOMCOLLFROMTEXT : 'ST_GEOMCOLLFROMTEXT';
ST_GEOMCOLLFROMTXT : 'ST_GEOMCOLLFROMTXT';
ST_GEOMCOLLFROMWKB : 'ST_GEOMCOLLFROMWKB';
ST_GEOMETRYCOLLECTIONFROMTEXT : 'ST_GEOMETRYCOLLECTIONFROMTEXT';
ST_GEOMETRYCOLLECTIONFROMWKB : 'ST_GEOMETRYCOLLECTIONFROMWKB';
ST_GEOMETRYFROMTEXT : 'ST_GEOMETRYFROMTEXT';
ST_GEOMETRYFROMWKB : 'ST_GEOMETRYFROMWKB';
ST_GEOMETRYN : 'ST_GEOMETRYN';
ST_GEOMETRYTYPE : 'ST_GEOMETRYTYPE';
ST_GEOMFROMTEXT : 'ST_GEOMFROMTEXT';
ST_GEOMFROMWKB : 'ST_GEOMFROMWKB';
ST_INTERIORRINGN : 'ST_INTERIORRINGN';
ST_INTERSECTION : 'ST_INTERSECTION';
ST_INTERSECTS : 'ST_INTERSECTS';
ST_ISCLOSED : 'ST_ISCLOSED';
ST_ISEMPTY : 'ST_ISEMPTY';
ST_ISSIMPLE : 'ST_ISSIMPLE';
ST_LINEFROMTEXT : 'ST_LINEFROMTEXT';
ST_LINEFROMWKB : 'ST_LINEFROMWKB';
ST_LINESTRINGFROMTEXT : 'ST_LINESTRINGFROMTEXT';
ST_LINESTRINGFROMWKB : 'ST_LINESTRINGFROMWKB';
ST_NUMGEOMETRIES : 'ST_NUMGEOMETRIES';
ST_NUMINTERIORRING : 'ST_NUMINTERIORRING';
ST_NUMINTERIORRINGS : 'ST_NUMINTERIORRINGS';
ST_NUMPOINTS : 'ST_NUMPOINTS';
ST_OVERLAPS : 'ST_OVERLAPS';
ST_POINTFROMTEXT : 'ST_POINTFROMTEXT';
ST_POINTFROMWKB : 'ST_POINTFROMWKB';
ST_POINTN : 'ST_POINTN';
ST_POLYFROMTEXT : 'ST_POLYFROMTEXT';
ST_POLYFROMWKB : 'ST_POLYFROMWKB';
ST_POLYGONFROMTEXT : 'ST_POLYGONFROMTEXT';
ST_POLYGONFROMWKB : 'ST_POLYGONFROMWKB';
ST_SRID : 'ST_SRID';
ST_STARTPOINT : 'ST_STARTPOINT';
ST_SYMDIFFERENCE : 'ST_SYMDIFFERENCE';
ST_TOUCHES : 'ST_TOUCHES';
ST_UNION : 'ST_UNION';
ST_WITHIN : 'ST_WITHIN';
ST_X : 'ST_X';
ST_Y : 'ST_Y';
SUBDATE : 'SUBDATE';
SUBSTRING_INDEX : 'SUBSTRING_INDEX';
SUBTIME : 'SUBTIME';
SYSTEM_USER : 'SYSTEM_USER';
TAN : 'TAN';
TIMEDIFF : 'TIMEDIFF';
TIMESTAMPADD : 'TIMESTAMPADD';
TIMESTAMPDIFF : 'TIMESTAMPDIFF';
TIME_FORMAT : 'TIME_FORMAT';
TIME_TO_SEC : 'TIME_TO_SEC';
TOUCHES : 'TOUCHES';
TO_BASE64 : 'TO_BASE64';
TO_DAYS : 'TO_DAYS';
TO_SECONDS : 'TO_SECONDS';
UCASE : 'UCASE';
UNCOMPRESS : 'UNCOMPRESS';
UNCOMPRESSED_LENGTH : 'UNCOMPRESSED_LENGTH';
UNHEX : 'UNHEX';
UNIX_TIMESTAMP : 'UNIX_TIMESTAMP';
UPDATEXML : 'UPDATEXML';
UPPER : 'UPPER';
UUID : 'UUID';
UUID_SHORT : 'UUID_SHORT';
VALIDATE_PASSWORD_STRENGTH : 'VALIDATE_PASSWORD_STRENGTH';
VERSION : 'VERSION';
WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS : 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS';
WEEKDAY : 'WEEKDAY';
WEEKOFYEAR : 'WEEKOFYEAR';
WEIGHT_STRING : 'WEIGHT_STRING';
WITHIN : 'WITHIN';
YEARWEEK : 'YEARWEEK';
Y_FUNCTION : 'Y';
X_FUNCTION : 'X';
// MariaDB tokens
VIA : 'VIA';
LASTVAL : 'LASTVAL';
NEXTVAL : 'NEXTVAL';
SETVAL : 'SETVAL';
PREVIOUS : 'PREVIOUS';
PERSISTENT : 'PERSISTENT'; // Same as STORED for MySQL
BINLOG_MONITOR : 'BINLOG_MONITOR';
BINLOG_REPLAY : 'BINLOG_REPLAY';
FEDERATED_ADMIN : 'FEDERATED_ADMIN';
READ_ONLY_ADMIN : 'READ_ONLY_ADMIN';
REPLICA : 'REPLICA';
REPLICAS : 'REPLICAS';
REPLICATION_MASTER_ADMIN : 'REPLICATION_MASTER_ADMIN';
MONITOR : 'MONITOR';
READ_ONLY : 'READ_ONLY';
REPLAY : 'REPLAY';
// Operators
// Operators. Assigns
VAR_ASSIGN : ':=';
PLUS_ASSIGN : '+=';
MINUS_ASSIGN : '-=';
MULT_ASSIGN : '*=';
DIV_ASSIGN : '/=';
MOD_ASSIGN : '%=';
AND_ASSIGN : '&=';
XOR_ASSIGN : '^=';
OR_ASSIGN : '|=';
// Operators. Arithmetics
STAR : '*';
DIVIDE : '/';
MODULE : '%';
PLUS : '+';
MINUS : '-';
DIV : 'DIV';
MOD : 'MOD';
// Operators. Comparation
EQUAL_SYMBOL : '=';
GREATER_SYMBOL : '>';
LESS_SYMBOL : '<';
EXCLAMATION_SYMBOL : '!';
// Operators. Bit
BIT_NOT_OP : '~';
BIT_OR_OP : '|';
BIT_AND_OP : '&';
BIT_XOR_OP : '^';
// Constructors symbols
DOT : '.';
LR_BRACKET : '(';
RR_BRACKET : ')';
COMMA : ',';
SEMI : ';';
AT_SIGN : '@';
ZERO_DECIMAL : '0';
ONE_DECIMAL : '1';
TWO_DECIMAL : '2';
SINGLE_QUOTE_SYMB : '\'';
DOUBLE_QUOTE_SYMB : '"';
REVERSE_QUOTE_SYMB : '`';
COLON_SYMB : ':';
fragment QUOTE_SYMB: SINGLE_QUOTE_SYMB | DOUBLE_QUOTE_SYMB | REVERSE_QUOTE_SYMB;
// Charsets
CHARSET_REVERSE_QOUTE_STRING: '`' CHARSET_NAME '`';
// File's sizes
FILESIZE_LITERAL: DEC_DIGIT+ ('K' | 'M' | 'G' | 'T');
// Literal Primitives
START_NATIONAL_STRING_LITERAL : 'N' SQUOTA_STRING;
STRING_LITERAL : DQUOTA_STRING | SQUOTA_STRING | BQUOTA_STRING;
DECIMAL_LITERAL : DEC_DIGIT+;
HEXADECIMAL_LITERAL : 'X' '\'' (HEX_DIGIT HEX_DIGIT)+ '\'' | '0X' HEX_DIGIT+;
REAL_LITERAL:
(DEC_DIGIT+)? '.' DEC_DIGIT+
| DEC_DIGIT+ '.' EXPONENT_NUM_PART
| (DEC_DIGIT+)? '.' (DEC_DIGIT+ EXPONENT_NUM_PART)
| DEC_DIGIT+ EXPONENT_NUM_PART
;
NULL_SPEC_LITERAL : '\\' 'N';
BIT_STRING : BIT_STRING_L;
STRING_CHARSET_NAME : '_' CHARSET_NAME;
// Hack for dotID
// Prevent recognize string: .123somelatin AS ((.123), FLOAT_LITERAL), ((somelatin), ID)
// it must recoginze: .123somelatin AS ((.), DOT), (123somelatin, ID)
DOT_ID: '.' ID_LITERAL;
// Identifiers
ID: ID_LITERAL;
// DOUBLE_QUOTE_ID: '"' ~'"'+ '"';
REVERSE_QUOTE_ID : BQUOTA_STRING;
HOST_IP_ADDRESS : (AT_SIGN IP_ADDRESS);
LOCAL_ID : AT_SIGN ( STRING_LITERAL | [A-Z0-9._$\u0080-\uFFFF]+);
GLOBAL_ID : AT_SIGN AT_SIGN ( [A-Z0-9._$\u0080-\uFFFF]+ | BQUOTA_STRING);
// Fragments for Literal primitives
fragment CHARSET_NAME:
ARMSCII8
| ASCII
| BIG5
| BINARY
| CP1250
| CP1251
| CP1256
| CP1257
| CP850
| CP852
| CP866
| CP932
| DEC8
| EUCJPMS
| EUCKR
| GB2312
| GBK
| GEOSTD8
| GREEK
| HEBREW
| HP8
| KEYBCS2
| KOI8R
| KOI8U
| LATIN1
| LATIN2
| LATIN5
| LATIN7
| MACCE
| MACROMAN
| SJIS
| SWE7
| TIS620
| UCS2
| UJIS
| UTF16
| UTF16LE
| UTF32
| UTF8
| UTF8MB3
| UTF8MB4
;
fragment EXPONENT_NUM_PART : 'E' [-+]? DEC_DIGIT+;
fragment ID_LITERAL : [A-Z_$0-9\u0080-\uFFFF]*? [A-Z_$\u0080-\uFFFF]+? [A-Z_$0-9\u0080-\uFFFF]*;
fragment DQUOTA_STRING : '"' ( '\\' . | '""' | ~('"' | '\\'))* '"';
fragment SQUOTA_STRING : '\'' ('\\' . | '\'\'' | ~('\'' | '\\'))* '\'';
fragment BQUOTA_STRING : '`' ( ~'`' | '``')* '`';
fragment HEX_DIGIT : [0-9A-F];
fragment DEC_DIGIT : [0-9];
fragment BIT_STRING_L : 'B' '\'' [01]+ '\'';
fragment IP_ADDRESS : [0-9]+ '.' [0-9.]+ | [0-9A-F:]+ ':' [0-9A-F:]+;
// Last tokens must generate Errors
ERROR_RECONGNIGION: . -> channel(ERRORCHANNEL);

View File

@ -0,0 +1,3610 @@
/*
MariaDB grammar
The MIT License (MIT).
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
// $antlr-format alignTrailingComments true, columnLimit 150, minEmptyLines 1, maxEmptyLinesToKeep 1, reflowComments false, useTab false
// $antlr-format allowShortRulesOnASingleLine false, allowShortBlocksOnASingleLine true, alignSemicolons hanging, alignColons hanging
parser grammar MariaDBParser;
options {
tokenVocab = MariaDBLexer;
}
// Top Level Description
root
: sqlStatements? (MINUS MINUS)? EOF
;
sqlStatements
: (sqlStatement (MINUS MINUS)? SEMI? | emptyStatement_)* (
sqlStatement ((MINUS MINUS)? SEMI)?
| emptyStatement_
)
;
sqlStatement
: setStatementFor? (
ddlStatement
| dmlStatement
| transactionStatement // setStatementFor is MariaDB-specific only
| replicationStatement
| preparedStatement
| administrationStatement
| utilityStatement
)
;
setStatementFor // setStatementFor is MariaDB-specific only
: SET STATEMENT ID EQUAL_SYMBOL constant (COMMA ID EQUAL_SYMBOL constant)* FOR
;
emptyStatement_
: SEMI
;
ddlStatement
: createDatabase
| createEvent
| createIndex
| createLogfileGroup
| createProcedure
| createFunction
| createServer
| createTable
| createTablespaceInnodb
| createTablespaceNdb
| createTrigger
| createView
| createRole
| createSequence
| alterDatabase
| alterEvent
| alterFunction
| alterInstance
| alterLogfileGroup
| alterProcedure
| alterServer
| alterTable
| alterTablespace
| alterView
| alterSequence
| dropDatabase
| dropEvent
| dropIndex
| dropLogfileGroup
| dropProcedure
| dropFunction
| dropServer
| dropTable
| dropTablespace
| dropTrigger
| dropView
| dropRole
| dropSequence
| setRole
| renameTable
| truncateTable
;
dmlStatement
: selectStatement
| insertStatement
| updateStatement
| deleteStatement
| replaceStatement
| callStatement
| loadDataStatement
| loadXmlStatement
| doStatement
| handlerStatement
| valuesStatement
;
transactionStatement
: startTransaction
| beginWork
| commitWork
| rollbackWork
| savepointStatement
| rollbackStatement
| releaseStatement
| lockTables
| unlockTables
;
replicationStatement
: changeMaster
| changeReplicationFilter
| purgeBinaryLogs
| resetMaster
| resetSlave
| startSlave
| stopSlave
| startGroupReplication
| stopGroupReplication
| xaStartTransaction
| xaEndTransaction
| xaPrepareStatement
| xaCommitWork
| xaRollbackWork
| xaRecoverWork
;
preparedStatement
: prepareStatement
| executeStatement
| deallocatePrepare
;
// remark: NOT INCLUDED IN sqlStatement, but include in body
// of routine's statements
compoundStatement
: blockStatement
| caseStatement
| ifStatement
| leaveStatement
| loopStatement
| repeatStatement
| whileStatement
| iterateStatement
| returnStatement
| cursorStatement
;
administrationStatement
: alterUser
| createUser
| dropUser
| grantStatement
| grantProxy
| renameUser
| revokeStatement
| revokeProxy
| analyzeTable
| checkTable
| checksumTable
| optimizeTable
| repairTable
| createUdfunction
| installPlugin
| uninstallPlugin
| setStatement
| showStatement
| binlogStatement
| cacheIndexStatement
| flushStatement
| killStatement
| loadIndexIntoCache
| resetStatement
| shutdownStatement
| explainStatement
;
utilityStatement
: simpleDescribeStatement
| fullDescribeStatement
| helpStatement
| useStatement
| signalStatement
| resignalStatement
| diagnosticsStatement
;
// Data Definition Language
// Create statements
createDatabase
: CREATE dbFormat = (DATABASE | SCHEMA) ifNotExists? uid createDatabaseOption* // here ifNotExists is MariaDB-specific only
;
createEvent
: CREATE ownerStatement? EVENT ifNotExists? fullId // here ifNotExists is MariaDB-specific only
ON SCHEDULE scheduleExpression (ON COMPLETION NOT? PRESERVE)? enableType? (
COMMENT STRING_LITERAL
)? DO routineBody
;
createIndex
: CREATE orReplace? // here orReplace is MariaDB-specific only
intimeAction = (ONLINE | OFFLINE)? indexCategory = (UNIQUE | FULLTEXT | SPATIAL)? INDEX ifNotExists? // here ifNotExists is MariaDB-specific only
uid indexType? ON tableName indexColumnNames waitNowaitClause? // waitNowaitClause is MariaDB-specific only
indexOption* (
ALGORITHM EQUAL_SYMBOL? algType = (
DEFAULT
| INPLACE
| COPY
| NOCOPY
| INSTANT
) // NOCOPY, INSTANT are MariaDB-specific only
| LOCK EQUAL_SYMBOL? lockType = (DEFAULT | NONE | SHARED | EXCLUSIVE)
)*
;
createLogfileGroup
: CREATE LOGFILE GROUP uid ADD UNDOFILE undoFile = STRING_LITERAL (
INITIAL_SIZE '='? initSize = fileSizeLiteral
)? (UNDO_BUFFER_SIZE '='? undoSize = fileSizeLiteral)? (
REDO_BUFFER_SIZE '='? redoSize = fileSizeLiteral
)? (NODEGROUP '='? uid)? WAIT? (COMMENT '='? comment = STRING_LITERAL)? ENGINE '='? engineName
;
createProcedure
: CREATE orReplace? ownerStatement? // here orReplace is MariaDB-specific only
PROCEDURE fullId '(' procedureParameter? (',' procedureParameter)* ')' routineOption* routineBody
;
createFunction
: CREATE orReplace? ownerStatement? AGGREGATE? // here orReplace is MariaDB-specific only
FUNCTION ifNotExists? fullId '(' functionParameter? (',' functionParameter)* ')' RETURNS dataType routineOption* (
routineBody
| returnStatement
)
;
createRole
: CREATE ROLE ifNotExists? roleName (',' roleName)*
;
createServer
: CREATE SERVER uid FOREIGN DATA WRAPPER wrapperName = (MYSQL | STRING_LITERAL) OPTIONS '(' serverOption (
',' serverOption
)* ')'
;
createTable
: CREATE orReplace? TEMPORARY? TABLE ifNotExists? // here orReplace is MariaDB-specific only
tableName (LIKE tableName | '(' LIKE parenthesisTable = tableName ')') # copyCreateTable
| CREATE orReplace? TEMPORARY? TABLE ifNotExists? // here orReplace is MariaDB-specific only
tableName createDefinitions? (tableOption (','? tableOption)*)? partitionDefinitions? keyViolate = (
IGNORE
| REPLACE
)? AS? selectStatement # queryCreateTable
| CREATE orReplace? TEMPORARY? TABLE ifNotExists? // here orReplace is MariaDB-specific only
tableName createDefinitions (tableOption (','? tableOption)*)? partitionDefinitions? # columnCreateTable
;
createTablespaceInnodb
: CREATE TABLESPACE uid ADD DATAFILE datafile = STRING_LITERAL (
FILE_BLOCK_SIZE '=' fileBlockSize = fileSizeLiteral
)? (ENGINE '='? engineName)?
;
createTablespaceNdb
: CREATE TABLESPACE uid ADD DATAFILE datafile = STRING_LITERAL USE LOGFILE GROUP uid (
EXTENT_SIZE '='? extentSize = fileSizeLiteral
)? (INITIAL_SIZE '='? initialSize = fileSizeLiteral)? (
AUTOEXTEND_SIZE '='? autoextendSize = fileSizeLiteral
)? (MAX_SIZE '='? maxSize = fileSizeLiteral)? (NODEGROUP '='? uid)? WAIT? (
COMMENT '='? comment = STRING_LITERAL
)? ENGINE '='? engineName
;
createTrigger
: CREATE orReplace? ownerStatement? // here orReplace is MariaDB-specific only
TRIGGER thisTrigger = fullId triggerTime = (BEFORE | AFTER) triggerEvent = (
INSERT
| UPDATE
| DELETE
) ON tableName FOR EACH ROW (triggerPlace = (FOLLOWS | PRECEDES) otherTrigger = fullId)? routineBody
;
withClause
: WITH RECURSIVE? commonTableExpressions
;
commonTableExpressions
: cteName ('(' cteColumnName (',' cteColumnName)* ')')? AS '(' dmlStatement ')' (
',' commonTableExpressions
)?
;
cteName
: uid
;
cteColumnName
: uid
;
createView
: CREATE orReplace? (ALGORITHM '=' algType = (UNDEFINED | MERGE | TEMPTABLE))? ownerStatement? (
SQL SECURITY secContext = (DEFINER | INVOKER)
)? VIEW fullId ('(' uidList ')')? AS (
'(' withClause? selectStatement ')'
| withClause? selectStatement (WITH checkOption = (CASCADED | LOCAL)? CHECK OPTION)?
)
;
createSequence // sequence is MariaDB-specific only
: CREATE orReplace? TEMPORARY? SEQUENCE ifNotExists? fullId // here orReplace is MariaDB-specific only
(sequenceSpec | tableOption)*
;
sequenceSpec
: INCREMENT (BY | '=')? decimalLiteral
| MINVALUE '='? decimalLiteral
| NO MINVALUE
| NOMINVALUE
| MAXVALUE '='? decimalLiteral
| NO MAXVALUE
| NOMAXVALUE
| START (WITH | '=')? decimalLiteral
| CACHE '='? decimalLiteral
| NOCACHE
| CYCLE
| NOCYCLE
| RESTART (WITH | '=')? decimalLiteral // use for alter sequence statment
;
// details
createDatabaseOption
: DEFAULT? charSet '='? (charsetName | DEFAULT)
| DEFAULT? COLLATE '='? collationName
| DEFAULT? ENCRYPTION '='? STRING_LITERAL
| READ ONLY '='? (DEFAULT | ZERO_DECIMAL | ONE_DECIMAL)
;
charSet
: CHARACTER SET
| CHARSET
| CHAR SET
;
currentUserExpression
: CURRENT_USER ('(' ')')?
;
ownerStatement
: DEFINER '=' (
userName
| currentUserExpression
| CURRENT_ROLE
) // CURRENT_ROLE is MariaDB-specific only
;
scheduleExpression
: AT timestampValue intervalExpr* # preciseSchedule
| EVERY (decimalLiteral | expression) intervalType (
STARTS startTimestamp = timestampValue (startIntervals += intervalExpr)*
)? (ENDS endTimestamp = timestampValue (endIntervals += intervalExpr)*)? # intervalSchedule
;
timestampValue
: CURRENT_TIMESTAMP
| stringLiteral
| decimalLiteral
| expression
;
intervalExpr
: '+' INTERVAL (decimalLiteral | expression) intervalType
;
intervalType
: intervalTypeBase
| YEAR
| YEAR_MONTH
| DAY_HOUR
| DAY_MINUTE
| DAY_SECOND
| HOUR_MINUTE
| HOUR_SECOND
| MINUTE_SECOND
| SECOND_MICROSECOND
| MINUTE_MICROSECOND
| HOUR_MICROSECOND
| DAY_MICROSECOND
;
enableType
: ENABLE
| DISABLE
| DISABLE ON SLAVE
;
indexType
: USING (BTREE | HASH | RTREE) // RTREE is MariaDB-specific only
;
indexOption
: KEY_BLOCK_SIZE EQUAL_SYMBOL? fileSizeLiteral
| indexType
| WITH PARSER uid
| COMMENT STRING_LITERAL
| (VISIBLE | INVISIBLE)
| ENGINE_ATTRIBUTE EQUAL_SYMBOL? STRING_LITERAL
| SECONDARY_ENGINE_ATTRIBUTE EQUAL_SYMBOL? STRING_LITERAL
| CLUSTERING EQUAL_SYMBOL (YES | NO) // MariaDB-specific only
| (IGNORED | NOT IGNORED) // MariaDB-specific only
;
procedureParameter
: direction = (IN | OUT | INOUT)? uid dataType
;
functionParameter
: uid dataType
;
routineOption
: COMMENT STRING_LITERAL # routineComment
| LANGUAGE SQL # routineLanguage
| NOT? DETERMINISTIC # routineBehavior
| ( CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA) # routineData
| SQL SECURITY context = (DEFINER | INVOKER) # routineSecurity
;
serverOption
: HOST STRING_LITERAL
| DATABASE STRING_LITERAL
| USER STRING_LITERAL
| PASSWORD STRING_LITERAL
| SOCKET STRING_LITERAL
| OWNER STRING_LITERAL
| PORT decimalLiteral
;
createDefinitions
: '(' createDefinition (',' createDefinition)* ')'
;
createDefinition
: uid columnDefinition # columnDeclaration
| tableConstraint # constraintDeclaration
| indexColumnDefinition # indexDeclaration
;
columnDefinition
: dataType columnConstraint*
;
columnConstraint
: nullNotnull # nullColumnConstraint
| DEFAULT defaultValue # defaultColumnConstraint
| VISIBLE # visibilityColumnConstraint
| INVISIBLE # invisibilityColumnConstraint
| (AUTO_INCREMENT | ON UPDATE currentTimestamp) # autoIncrementColumnConstraint
| PRIMARY? KEY # primaryKeyColumnConstraint
| UNIQUE KEY? # uniqueKeyColumnConstraint
| COMMENT STRING_LITERAL # commentColumnConstraint
| COLUMN_FORMAT colformat = (FIXED | DYNAMIC | DEFAULT) # formatColumnConstraint
| STORAGE storageval = (DISK | MEMORY | DEFAULT) # storageColumnConstraint
| referenceDefinition # referenceColumnConstraint
| COLLATE collationName # collateColumnConstraint
| (GENERATED ALWAYS)? AS '(' expression ')' (VIRTUAL | STORED | PERSISTENT)? # generatedColumnConstraint
| SERIAL DEFAULT VALUE # serialDefaultColumnConstraint
| (CONSTRAINT name = uid?)? CHECK '(' expression ')' # checkColumnConstraint
;
tableConstraint
: (CONSTRAINT name = uid?)? PRIMARY KEY index = uid? indexType? indexColumnNames indexOption* # primaryKeyTableConstraint
| (CONSTRAINT name = uid?)? UNIQUE indexFormat = (INDEX | KEY)? index = uid? indexType? indexColumnNames indexOption* # uniqueKeyTableConstraint
| (CONSTRAINT name = uid?)? FOREIGN KEY index = uid? indexColumnNames referenceDefinition # foreignKeyTableConstraint
| (CONSTRAINT name = uid?)? CHECK '(' expression ')' # checkTableConstraint
;
referenceDefinition
: REFERENCES tableName indexColumnNames? (MATCH matchType = (FULL | PARTIAL | SIMPLE))? referenceAction?
;
referenceAction
: ON DELETE onDelete = referenceControlType (ON UPDATE onUpdate = referenceControlType)?
| ON UPDATE onUpdate = referenceControlType (ON DELETE onDelete = referenceControlType)?
;
referenceControlType
: RESTRICT
| CASCADE
| SET NULL_LITERAL
| NO ACTION
;
indexColumnDefinition
: indexFormat = (INDEX | KEY) uid? indexType? indexColumnNames indexOption* # simpleIndexDeclaration
| (FULLTEXT | SPATIAL) indexFormat = (INDEX | KEY)? uid? indexColumnNames indexOption* # specialIndexDeclaration
;
tableOption
: ENGINE '='? engineName? # tableOptionEngine
| ENGINE_ATTRIBUTE '='? STRING_LITERAL # tableOptionEngineAttribute
| AUTOEXTEND_SIZE '='? decimalLiteral # tableOptionAutoextendSize
| AUTO_INCREMENT '='? decimalLiteral # tableOptionAutoIncrement
| AVG_ROW_LENGTH '='? decimalLiteral # tableOptionAverage
| DEFAULT? charSet '='? (charsetName | DEFAULT) # tableOptionCharset
| (CHECKSUM | PAGE_CHECKSUM) '='? boolValue = ('0' | '1') # tableOptionChecksum
| DEFAULT? COLLATE '='? collationName # tableOptionCollate
| COMMENT '='? STRING_LITERAL # tableOptionComment
| COMPRESSION '='? (STRING_LITERAL | ID) # tableOptionCompression
| CONNECTION '='? STRING_LITERAL # tableOptionConnection
| (DATA | INDEX) DIRECTORY '='? STRING_LITERAL # tableOptionDataDirectory
| DELAY_KEY_WRITE '='? boolValue = ('0' | '1') # tableOptionDelay
| ENCRYPTION '='? STRING_LITERAL # tableOptionEncryption
| encryptedLiteral '='? (YES | NO) # tableOptionEncrypted
| (PAGE_COMPRESSED | STRING_LITERAL) '='? ('0' | '1') # tableOptionPageCompressed
| (PAGE_COMPRESSION_LEVEL | STRING_LITERAL) '='? decimalLiteral # tableOptionPageCompressionLevel
| ENCRYPTION_KEY_ID '='? decimalLiteral # tableOptionEncryptionKeyId
| INDEX DIRECTORY '='? STRING_LITERAL # tableOptionIndexDirectory
| INSERT_METHOD '='? insertMethod = (NO | FIRST | LAST) # tableOptionInsertMethod
| KEY_BLOCK_SIZE '='? fileSizeLiteral # tableOptionKeyBlockSize
| MAX_ROWS '='? decimalLiteral # tableOptionMaxRows
| MIN_ROWS '='? decimalLiteral # tableOptionMinRows
| PACK_KEYS '='? extBoolValue = ('0' | '1' | DEFAULT) # tableOptionPackKeys
| PASSWORD '='? STRING_LITERAL # tableOptionPassword
| ROW_FORMAT '='? rowFormat = (
DEFAULT
| DYNAMIC
| FIXED
| COMPRESSED
| REDUNDANT
| COMPACT
| ID
) # tableOptionRowFormat
| START TRANSACTION # tableOptionStartTransaction
| SECONDARY_ENGINE_ATTRIBUTE '='? STRING_LITERAL # tableOptionSecondaryEngineAttribute
| STATS_AUTO_RECALC '='? extBoolValue = (DEFAULT | '0' | '1') # tableOptionRecalculation
| STATS_PERSISTENT '='? extBoolValue = (DEFAULT | '0' | '1') # tableOptionPersistent
| STATS_SAMPLE_PAGES '='? (DEFAULT | decimalLiteral) # tableOptionSamplePage
| TABLESPACE uid tablespaceStorage? # tableOptionTablespace
| TABLE_TYPE '=' tableType # tableOptionTableType
| tablespaceStorage # tableOptionTablespace
| TRANSACTIONAL '='? ('0' | '1') # tableOptionTransactional
| UNION '='? '(' tables ')' # tableOptionUnion
;
tableType
: MYSQL
| ODBC
;
tablespaceStorage
: STORAGE (DISK | MEMORY | DEFAULT)
;
partitionDefinitions
: PARTITION BY partitionFunctionDefinition (PARTITIONS count = decimalLiteral)? (
SUBPARTITION BY subpartitionFunctionDefinition (SUBPARTITIONS subCount = decimalLiteral)?
)? ('(' partitionDefinition (',' partitionDefinition)* ')')?
;
partitionFunctionDefinition
: LINEAR? HASH '(' expression ')' # partitionFunctionHash
| LINEAR? KEY (ALGORITHM '=' algType = ('1' | '2'))? '(' uidList ')' # partitionFunctionKey
| RANGE ('(' expression ')' | COLUMNS '(' uidList ')') # partitionFunctionRange
| LIST ('(' expression ')' | COLUMNS '(' uidList ')') # partitionFunctionList
;
subpartitionFunctionDefinition
: LINEAR? HASH '(' expression ')' # subPartitionFunctionHash
| LINEAR? KEY (ALGORITHM '=' algType = ('1' | '2'))? '(' uidList ')' # subPartitionFunctionKey
;
partitionDefinition
: PARTITION uid VALUES LESS THAN '(' partitionDefinerAtom (',' partitionDefinerAtom)* ')' partitionOption* (
'(' subpartitionDefinition (',' subpartitionDefinition)* ')'
)? # partitionComparison
| PARTITION uid VALUES LESS THAN partitionDefinerAtom partitionOption* (
'(' subpartitionDefinition (',' subpartitionDefinition)* ')'
)? # partitionComparison
| PARTITION uid VALUES IN '(' partitionDefinerAtom (',' partitionDefinerAtom)* ')' partitionOption* (
'(' subpartitionDefinition (',' subpartitionDefinition)* ')'
)? # partitionListAtom
| PARTITION uid VALUES IN '(' partitionDefinerVector (',' partitionDefinerVector)* ')' partitionOption* (
'(' subpartitionDefinition (',' subpartitionDefinition)* ')'
)? # partitionListVector
| PARTITION uid partitionOption* ('(' subpartitionDefinition (',' subpartitionDefinition)* ')')? # partitionSimple
;
partitionDefinerAtom
: constant
| expression
| MAXVALUE
;
partitionDefinerVector
: '(' partitionDefinerAtom (',' partitionDefinerAtom)+ ')'
;
subpartitionDefinition
: SUBPARTITION uid partitionOption*
;
partitionOption
: DEFAULT? STORAGE? ENGINE '='? engineName # partitionOptionEngine
| COMMENT '='? comment = STRING_LITERAL # partitionOptionComment
| DATA DIRECTORY '='? dataDirectory = STRING_LITERAL # partitionOptionDataDirectory
| INDEX DIRECTORY '='? indexDirectory = STRING_LITERAL # partitionOptionIndexDirectory
| MAX_ROWS '='? maxRows = decimalLiteral # partitionOptionMaxRows
| MIN_ROWS '='? minRows = decimalLiteral # partitionOptionMinRows
| TABLESPACE '='? tablespace = uid # partitionOptionTablespace
| NODEGROUP '='? nodegroup = uid # partitionOptionNodeGroup
;
// Alter statements
alterDatabase
: ALTER dbFormat = (DATABASE | SCHEMA) uid? createDatabaseOption+ # alterSimpleDatabase
| ALTER dbFormat = (DATABASE | SCHEMA) uid UPGRADE DATA DIRECTORY NAME # alterUpgradeName
;
alterEvent
: ALTER ownerStatement? EVENT fullId (ON SCHEDULE scheduleExpression)? (
ON COMPLETION NOT? PRESERVE
)? (RENAME TO fullId)? enableType? (COMMENT STRING_LITERAL)? (DO routineBody)?
;
alterFunction
: ALTER FUNCTION fullId routineOption*
;
alterInstance
: ALTER INSTANCE ROTATE INNODB MASTER KEY
;
alterLogfileGroup
: ALTER LOGFILE GROUP uid ADD UNDOFILE STRING_LITERAL (INITIAL_SIZE '='? fileSizeLiteral)? WAIT? ENGINE '='? engineName
;
alterProcedure
: ALTER PROCEDURE fullId routineOption*
;
alterServer
: ALTER SERVER uid OPTIONS '(' serverOption (',' serverOption)* ')'
;
alterTable
: ALTER intimeAction = (ONLINE | OFFLINE)? IGNORE? TABLE ifExists? tableName waitNowaitClause? // waitNowaitClause is MariaDB-specific only
(alterSpecification (',' alterSpecification)*)? partitionDefinitions?
;
alterTablespace
: ALTER TABLESPACE uid objectAction = (ADD | DROP) DATAFILE STRING_LITERAL (
INITIAL_SIZE '=' fileSizeLiteral
)? WAIT? ENGINE '='? engineName
;
alterView
: ALTER (ALGORITHM '=' algType = (UNDEFINED | MERGE | TEMPTABLE))? ownerStatement? (
SQL SECURITY secContext = (DEFINER | INVOKER)
)? VIEW fullId ('(' uidList ')')? AS selectStatement (
WITH checkOpt = (CASCADED | LOCAL)? CHECK OPTION
)?
;
alterSequence // sequence is MariaDB-specific only
: ALTER SEQUENCE ifExists? fullId sequenceSpec+
;
// details
alterSpecification
: tableOption (','? tableOption)* # alterByTableOption
| ADD COLUMN? ifNotExists? uid columnDefinition (FIRST | AFTER uid)? # alterByAddColumn // here ifNotExists is MariaDB-specific only
| ADD COLUMN? ifNotExists? // here ifNotExists is MariaDB-specific only
'(' uid columnDefinition (',' uid columnDefinition)* ')' # alterByAddColumns
| ADD indexFormat = (INDEX | KEY) ifNotExists? uid? indexType? // here ifNotExists is MariaDB-specific only
indexColumnNames indexOption* # alterByAddIndex
| ADD (CONSTRAINT name = uid?)? PRIMARY KEY index = uid? indexType? indexColumnNames indexOption* # alterByAddPrimaryKey
| ADD (CONSTRAINT name = uid?)? UNIQUE ifNotExists? indexFormat = (INDEX | KEY)? indexName = uid? indexType? indexColumnNames indexOption* #
alterByAddUniqueKey
| ADD keyType = (FULLTEXT | SPATIAL) indexFormat = (INDEX | KEY)? uid? indexColumnNames indexOption* # alterByAddSpecialIndex
| ADD (CONSTRAINT name = uid?)? FOREIGN KEY ifNotExists? // here ifNotExists is MariaDB-specific only
indexName = uid? indexColumnNames referenceDefinition # alterByAddForeignKey
| ADD (CONSTRAINT name = uid?)? CHECK '(' expression ')' # alterByAddCheckTableConstraint
| ALGORITHM '='? algType = (DEFAULT | INSTANT | INPLACE | COPY | NOCOPY) # alterBySetAlgorithm
| ALTER COLUMN? uid (SET DEFAULT defaultValue | DROP DEFAULT) # alterByChangeDefault
| CHANGE COLUMN? ifExists? oldColumn = uid // here ifExists is MariaDB-specific only
newColumn = uid columnDefinition (FIRST | AFTER afterColumn = uid)? # alterByChangeColumn
| RENAME COLUMN oldColumn = uid TO newColumn = uid # alterByRenameColumn
| LOCK '='? lockType = (DEFAULT | NONE | SHARED | EXCLUSIVE) # alterByLock
| MODIFY COLUMN? ifExists? // here ifExists is MariaDB-specific only
uid columnDefinition (FIRST | AFTER uid)? # alterByModifyColumn
| DROP COLUMN? ifExists? uid RESTRICT? # alterByDropColumn // here ifExists is MariaDB-specific only
| DROP (CONSTRAINT | CHECK) ifExists? uid # alterByDropConstraintCheck // here ifExists is MariaDB-specific only
| DROP PRIMARY KEY # alterByDropPrimaryKey
| DROP indexFormat = (INDEX | KEY) ifExists? uid # alterByDropIndex // here ifExists is MariaDB-specific only
| RENAME indexFormat = (INDEX | KEY) uid TO uid # alterByRenameIndex
| ALTER INDEX uid (VISIBLE | INVISIBLE) # alterByAlterIndexVisibility
| DROP FOREIGN KEY ifExists? uid dottedId? # alterByDropForeignKey // here ifExists is MariaDB-specific only
| DISABLE KEYS # alterByDisableKeys
| ENABLE KEYS # alterByEnableKeys
| RENAME renameFormat = (TO | AS)? (uid | fullId) # alterByRename
| ORDER BY uidList # alterByOrder
| CONVERT TO CHARACTER SET charsetName (COLLATE collationName)? # alterByConvertCharset
| DEFAULT? CHARACTER SET '=' charsetName (COLLATE '=' collationName)? # alterByDefaultCharset
| DISCARD TABLESPACE # alterByDiscardTablespace
| IMPORT TABLESPACE # alterByImportTablespace
| FORCE # alterByForce
| validationFormat = (WITHOUT | WITH) VALIDATION # alterByValidate
| ADD COLUMN? ifNotExists? // here ifNotExists is MariaDB-specific only
'(' createDefinition (',' createDefinition)* ')' # alterByAddDefinitions
| alterPartitionSpecification # alterPartition
;
alterPartitionSpecification
: ADD PARTITION ifNotExists? // here ifNotExists is MariaDB-specific only
'(' partitionDefinition (',' partitionDefinition)* ')' # alterByAddPartition
| DROP PARTITION ifExists? uidList # alterByDropPartition // here ifExists is MariaDB-specific only
| DISCARD PARTITION (uidList | ALL) TABLESPACE # alterByDiscardPartition
| IMPORT PARTITION (uidList | ALL) TABLESPACE # alterByImportPartition
| TRUNCATE PARTITION (uidList | ALL) # alterByTruncatePartition
| COALESCE PARTITION decimalLiteral # alterByCoalescePartition
| REORGANIZE PARTITION uidList INTO '(' partitionDefinition (',' partitionDefinition)* ')' # alterByReorganizePartition
| EXCHANGE PARTITION uid WITH TABLE tableName (validationFormat = (WITH | WITHOUT) VALIDATION)? # alterByExchangePartition
| ANALYZE PARTITION (uidList | ALL) # alterByAnalyzePartition
| CHECK PARTITION (uidList | ALL) # alterByCheckPartition
| OPTIMIZE PARTITION (uidList | ALL) # alterByOptimizePartition
| REBUILD PARTITION (uidList | ALL) # alterByRebuildPartition
| REPAIR PARTITION (uidList | ALL) # alterByRepairPartition
| REMOVE PARTITIONING # alterByRemovePartitioning
| UPGRADE PARTITIONING # alterByUpgradePartitioning
;
// Drop statements
dropDatabase
: DROP dbFormat = (DATABASE | SCHEMA) ifExists? uid
;
dropEvent
: DROP EVENT ifExists? fullId
;
dropIndex
: DROP INDEX ifExists? intimeAction = (ONLINE | OFFLINE)? // here ifExists is MariaDB-specific only
uid ON tableName (
ALGORITHM '='? algType = (DEFAULT | INPLACE | COPY)
| LOCK '='? lockType = (DEFAULT | NONE | SHARED | EXCLUSIVE)
)* waitNowaitClause? // waitNowaitClause is MariaDB-specific only
;
dropLogfileGroup
: DROP LOGFILE GROUP uid ENGINE '=' engineName
;
dropProcedure
: DROP PROCEDURE ifExists? fullId
;
dropFunction
: DROP FUNCTION ifExists? fullId
;
dropServer
: DROP SERVER ifExists? uid
;
dropTable
: DROP TEMPORARY? TABLE ifExists? tables waitNowaitClause? dropType = (RESTRICT | CASCADE)? // waitNowaitClause is MariaDB-specific only
;
dropTablespace
: DROP TABLESPACE uid (ENGINE '='? engineName)?
;
dropTrigger
: DROP TRIGGER ifExists? fullId
;
dropView
: DROP VIEW ifExists? fullId (',' fullId)* dropType = (RESTRICT | CASCADE)?
;
dropRole
: DROP ROLE ifExists? roleName (',' roleName)*
;
setRole
: SET DEFAULT ROLE (NONE | ALL | roleName (',' roleName)*) TO (userName | uid) (
',' (userName | uid)
)*
| SET ROLE roleOption
;
dropSequence // sequence is MariaDB-specific only
: DROP TEMPORARY? SEQUENCE ifExists? COMMENT_INPUT? fullId (',' fullId)*
;
// Other DDL statements
renameTable
: RENAME TABLE renameTableClause (',' renameTableClause)*
;
renameTableClause
: tableName waitNowaitClause? TO tableName // waitNowaitClause is MariaDB-specific only
;
truncateTable
: TRUNCATE TABLE? tableName waitNowaitClause? // waitNowaitClause is MariaDB-specific only
;
// Data Manipulation Language
// Primary DML Statements
callStatement
: CALL fullId ('(' (constants | expressions)? ')')?
;
deleteStatement
: singleDeleteStatement
| multipleDeleteStatement
;
doStatement
: DO expressions
;
handlerStatement
: handlerOpenStatement
| handlerReadIndexStatement
| handlerReadStatement
| handlerCloseStatement
;
insertStatement
: INSERT priority = (LOW_PRIORITY | DELAYED | HIGH_PRIORITY)? IGNORE? INTO? tableName (
PARTITION '(' partitions = uidList? ')'
)? (
('(' columns = uidList ')')? insertStatementValue
| SET setFirst = updatedElement (',' setElements += updatedElement)*
) (
ON DUPLICATE KEY UPDATE duplicatedFirst = updatedElement (
',' duplicatedElements += updatedElement
)*
)?
;
loadDataStatement
: LOAD DATA priority = (LOW_PRIORITY | CONCURRENT)? LOCAL? INFILE filename = STRING_LITERAL violation = (
REPLACE
| IGNORE
)? INTO TABLE tableName (PARTITION '(' uidList ')')? (CHARACTER SET charset = charsetName)? (
fieldsFormat = (FIELDS | COLUMNS) selectFieldsInto+
)? (LINES selectLinesInto+)? (IGNORE decimalLiteral linesFormat = (LINES | ROWS))? (
'(' assignmentField (',' assignmentField)* ')'
)? (SET updatedElement (',' updatedElement)*)?
;
loadXmlStatement
: LOAD XML priority = (LOW_PRIORITY | CONCURRENT)? LOCAL? INFILE filename = STRING_LITERAL violation = (
REPLACE
| IGNORE
)? INTO TABLE tableName (CHARACTER SET charset = charsetName)? (
ROWS IDENTIFIED BY '<' tag = STRING_LITERAL '>'
)? (IGNORE decimalLiteral linesFormat = (LINES | ROWS))? (
'(' assignmentField (',' assignmentField)* ')'
)? (SET updatedElement (',' updatedElement)*)?
;
replaceStatement
: REPLACE priority = (LOW_PRIORITY | DELAYED)? INTO? tableName (
PARTITION '(' partitions = uidList ')'
)? (
('(' columns = uidList ')')? insertStatementValue
| SET setFirst = updatedElement (',' setElements += updatedElement)*
)
;
selectStatement
: querySpecification lockClause? # simpleSelect
| queryExpression lockClause? # parenthesisSelect
| querySpecificationNointo unionStatement+ (
UNION unionType = (ALL | DISTINCT)? (querySpecification | queryExpression)
)? orderByClause? limitClause? lockClause? # unionSelect
| queryExpressionNointo unionParenthesis+ (UNION unionType = (ALL | DISTINCT)? queryExpression)? orderByClause? limitClause? lockClause? #
unionParenthesisSelect
| querySpecificationNointo (',' lateralStatement)+ # withLateralStatement
;
updateStatement
: singleUpdateStatement
| multipleUpdateStatement
;
// https://mariadb.com/kb/en/table-value-constructors/
valuesStatement
: VALUES '(' expressionsWithDefaults? ')' (',' '(' expressionsWithDefaults? ')')*
;
// details
insertStatementValue
: selectStatement
| insertFormat = (VALUES | VALUE) '(' expressionsWithDefaults? ')' (
',' '(' expressionsWithDefaults? ')'
)*
;
updatedElement
: fullColumnName '=' (expression | DEFAULT)
;
assignmentField
: uid
| LOCAL_ID
;
lockClause
: (FOR UPDATE | LOCK IN SHARE MODE) lockOption? // lockOption is MariaDB-specific only
;
// Detailed DML Statements
singleDeleteStatement
: DELETE priority = LOW_PRIORITY? QUICK? IGNORE? FROM tableName (PARTITION '(' uidList ')')? (
WHERE expression
)? orderByClause? (LIMIT limitClauseAtom)?
;
multipleDeleteStatement
: DELETE priority = LOW_PRIORITY? QUICK? IGNORE? (
tableName ('.' '*')? ( ',' tableName ('.' '*')?)* FROM tableSources
| FROM tableName ('.' '*')? ( ',' tableName ('.' '*')?)* USING tableSources
) (WHERE expression)?
;
handlerOpenStatement
: HANDLER tableName OPEN (AS? uid)?
;
handlerReadIndexStatement
: HANDLER tableName READ index = uid (
comparisonOperator '(' constants ')'
| moveOrder = (FIRST | NEXT | PREV | LAST)
) (WHERE expression)? (LIMIT limitClauseAtom)?
;
handlerReadStatement
: HANDLER tableName READ moveOrder = (FIRST | NEXT) (WHERE expression)? (LIMIT limitClauseAtom)?
;
handlerCloseStatement
: HANDLER tableName CLOSE
;
singleUpdateStatement
: UPDATE priority = LOW_PRIORITY? IGNORE? tableName (AS? uid)? SET updatedElement (
',' updatedElement
)* (WHERE expression)? orderByClause? limitClause?
;
multipleUpdateStatement
: UPDATE priority = LOW_PRIORITY? IGNORE? tableSources SET updatedElement (',' updatedElement)* (
WHERE expression
)?
;
// details
orderByClause
: ORDER BY orderByExpression (',' orderByExpression)*
;
orderByExpression
: expression order = (ASC | DESC)?
;
tableSources
: tableSource (',' tableSource)*
;
tableSource
: tableSourceItem joinPart* # tableSourceBase
| '(' tableSourceItem joinPart* ')' # tableSourceNested
| jsonTable # tableJson
;
tableSourceItem
: tableName (PARTITION '(' uidList ')')? (AS? alias = uid)? (indexHint (',' indexHint)*)? # atomTableItem
| (selectStatement | '(' parenthesisSubquery = selectStatement ')') AS? alias = uid # subqueryTableItem
| '(' tableSources ')' # tableSourcesItem
;
indexHint
: indexHintAction = (USE | IGNORE | FORCE) keyFormat = (INDEX | KEY) (FOR indexHintType)? '(' uidList ')'
;
indexHintType
: JOIN
| ORDER BY
| GROUP BY
;
joinPart
: (INNER | CROSS)? JOIN LATERAL? tableSourceItem (ON expression | USING '(' uidList ')')? # innerJoin
| STRAIGHT_JOIN tableSourceItem (ON expression)? # straightJoin
| (LEFT | RIGHT) OUTER? JOIN LATERAL? tableSourceItem (ON expression | USING '(' uidList ')') # outerJoin
| NATURAL ((LEFT | RIGHT) OUTER?)? JOIN tableSourceItem # naturalJoin
;
// Select Statement's Details
queryExpression
: '(' querySpecification ')'
| '(' queryExpression ')'
;
queryExpressionNointo
: '(' querySpecificationNointo ')'
| '(' queryExpressionNointo ')'
;
querySpecification
: SELECT selectSpec* selectElements selectIntoExpression? fromClause? groupByClause? havingClause? windowClause? orderByClause? limitClause?
| SELECT selectSpec* selectElements fromClause? groupByClause? havingClause? windowClause? orderByClause? limitClause? selectIntoExpression?
;
querySpecificationNointo
: SELECT selectSpec* selectElements fromClause? groupByClause? havingClause? windowClause? orderByClause? limitClause?
;
unionParenthesis
: UNION unionType = (ALL | DISTINCT)? queryExpressionNointo
;
unionStatement
: UNION unionType = (ALL | DISTINCT)? (querySpecificationNointo | queryExpressionNointo)
;
lateralStatement
: LATERAL (
querySpecificationNointo
| queryExpressionNointo
| ('(' (querySpecificationNointo | queryExpressionNointo) ')' (AS? uid)?)
)
;
// JSON
// https://dev.mysql.com/doc/refman/8.0/en/json-table-functions.html
jsonTable
: JSON_TABLE '(' STRING_LITERAL ',' STRING_LITERAL COLUMNS '(' jsonColumnList ')' ')' (AS? uid)?
;
jsonColumnList
: jsonColumn (',' jsonColumn)*
;
jsonColumn
: fullColumnName (
FOR ORDINALITY
| dataType (PATH STRING_LITERAL jsonOnEmpty? jsonOnError? | EXISTS PATH STRING_LITERAL)
)
| NESTED PATH? STRING_LITERAL COLUMNS '(' jsonColumnList ')'
;
jsonOnEmpty
: (NULL_LITERAL | ERROR | DEFAULT defaultValue) ON EMPTY
;
jsonOnError
: (NULL_LITERAL | ERROR | DEFAULT defaultValue) ON ERROR
;
// details
selectSpec
: (ALL | DISTINCT | DISTINCTROW)
| HIGH_PRIORITY
| STRAIGHT_JOIN
| SQL_SMALL_RESULT
| SQL_BIG_RESULT
| SQL_BUFFER_RESULT
| (SQL_CACHE | SQL_NO_CACHE)
| SQL_CALC_FOUND_ROWS
;
selectElements
: (star = '*' | selectElement) (',' selectElement)*
;
selectElement
: fullId '.' '*' # selectStarElement
| fullColumnName (AS? uid)? # selectColumnElement
| functionCall (AS? uid)? # selectFunctionElement
| (LOCAL_ID VAR_ASSIGN)? expression (AS? uid)? # selectExpressionElement
;
selectIntoExpression
: INTO assignmentField (',' assignmentField)* # selectIntoVariables
| INTO DUMPFILE STRING_LITERAL # selectIntoDumpFile
| (
INTO OUTFILE filename = STRING_LITERAL (CHARACTER SET charset = charsetName)? (
fieldsFormat = (FIELDS | COLUMNS) selectFieldsInto+
)? (LINES selectLinesInto+)?
) # selectIntoTextFile
;
selectFieldsInto
: TERMINATED BY terminationField = STRING_LITERAL
| OPTIONALLY? ENCLOSED BY enclosion = STRING_LITERAL
| ESCAPED BY escaping = STRING_LITERAL
;
selectLinesInto
: STARTING BY starting = STRING_LITERAL
| TERMINATED BY terminationLine = STRING_LITERAL
;
fromClause
: (FROM tableSources)? (WHERE whereExpr = expression)?
;
groupByClause
: GROUP BY groupByItem (',' groupByItem)* (WITH ROLLUP)?
;
havingClause
: HAVING havingExpr = expression
;
windowClause
: WINDOW windowName AS '(' windowSpec ')' (',' windowName AS '(' windowSpec ')')*
;
groupByItem
: expression order = (ASC | DESC)?
;
limitClause
: LIMIT (
(offset = limitClauseAtom ',')? limit = limitClauseAtom
| limit = limitClauseAtom OFFSET offset = limitClauseAtom
)
;
limitClauseAtom
: decimalLiteral
| mysqlVariable
| simpleId
;
// Transaction's Statements
startTransaction
: START TRANSACTION (transactionMode (',' transactionMode)*)?
;
beginWork
: BEGIN WORK?
;
commitWork
: COMMIT WORK? (AND nochain = NO? CHAIN)? (norelease = NO? RELEASE)?
;
rollbackWork
: ROLLBACK WORK? (AND nochain = NO? CHAIN)? (norelease = NO? RELEASE)?
;
savepointStatement
: SAVEPOINT uid
;
rollbackStatement
: ROLLBACK WORK? TO SAVEPOINT? uid
;
releaseStatement
: RELEASE SAVEPOINT uid
;
lockTables
: LOCK (TABLE | TABLES) lockTableElement (',' lockTableElement)* waitNowaitClause? // waitNowaitClause is MariaDB-specific only
;
unlockTables
: UNLOCK TABLES
;
// details
setAutocommitStatement
: SET AUTOCOMMIT '=' autocommitValue = ('0' | '1')
;
setTransactionStatement
: SET transactionContext = (GLOBAL | SESSION)? TRANSACTION transactionOption (
',' transactionOption
)*
;
transactionMode
: WITH CONSISTENT SNAPSHOT
| READ WRITE
| READ ONLY
;
lockTableElement
: tableName (AS? uid)? lockAction
;
lockAction
: READ LOCAL?
| LOW_PRIORITY? WRITE
;
transactionOption
: ISOLATION LEVEL transactionLevel
| READ WRITE
| READ ONLY
;
transactionLevel
: REPEATABLE READ
| READ COMMITTED
| READ UNCOMMITTED
| SERIALIZABLE
;
// Replication's Statements
// Base Replication
changeMaster
: CHANGE MASTER TO masterOption (',' masterOption)* channelOption?
;
changeReplicationFilter
: CHANGE REPLICATION FILTER replicationFilter (',' replicationFilter)*
;
purgeBinaryLogs
: PURGE purgeFormat = (BINARY | MASTER) LOGS (
TO fileName = STRING_LITERAL
| BEFORE timeValue = STRING_LITERAL
)
;
resetMaster
: RESET MASTER
;
resetSlave
: RESET SLAVE ALL? channelOption?
;
startSlave
: START SLAVE (threadType (',' threadType)*)? (UNTIL untilOption)? connectionOption* channelOption?
;
stopSlave
: STOP SLAVE (threadType (',' threadType)*)?
;
startGroupReplication
: START GROUP_REPLICATION
;
stopGroupReplication
: STOP GROUP_REPLICATION
;
// details
masterOption
: stringMasterOption '=' STRING_LITERAL # masterStringOption
| decimalMasterOption '=' decimalLiteral # masterDecimalOption
| boolMasterOption '=' boolVal = ('0' | '1') # masterBoolOption
| MASTER_HEARTBEAT_PERIOD '=' REAL_LITERAL # masterRealOption
| IGNORE_SERVER_IDS '=' '(' (uid (',' uid)*)? ')' # masterUidListOption
;
stringMasterOption
: MASTER_BIND
| MASTER_HOST
| MASTER_USER
| MASTER_PASSWORD
| MASTER_LOG_FILE
| RELAY_LOG_FILE
| MASTER_SSL_CA
| MASTER_SSL_CAPATH
| MASTER_SSL_CERT
| MASTER_SSL_CRL
| MASTER_SSL_CRLPATH
| MASTER_SSL_KEY
| MASTER_SSL_CIPHER
| MASTER_TLS_VERSION
;
decimalMasterOption
: MASTER_PORT
| MASTER_CONNECT_RETRY
| MASTER_RETRY_COUNT
| MASTER_DELAY
| MASTER_LOG_POS
| RELAY_LOG_POS
;
boolMasterOption
: MASTER_AUTO_POSITION
| MASTER_SSL
| MASTER_SSL_VERIFY_SERVER_CERT
;
channelOption
: FOR CHANNEL STRING_LITERAL
;
replicationFilter
: REPLICATE_DO_DB '=' '(' uidList ')' # doDbReplication
| REPLICATE_IGNORE_DB '=' '(' uidList ')' # ignoreDbReplication
| REPLICATE_DO_TABLE '=' '(' tables ')' # doTableReplication
| REPLICATE_IGNORE_TABLE '=' '(' tables ')' # ignoreTableReplication
| REPLICATE_WILD_DO_TABLE '=' '(' simpleStrings ')' # wildDoTableReplication
| REPLICATE_WILD_IGNORE_TABLE '=' '(' simpleStrings ')' # wildIgnoreTableReplication
| REPLICATE_REWRITE_DB '=' '(' tablePair (',' tablePair)* ')' # rewriteDbReplication
;
tablePair
: '(' firstTable = tableName ',' secondTable = tableName ')'
;
threadType
: IO_THREAD
| SQL_THREAD
;
untilOption
: gtids = (SQL_BEFORE_GTIDS | SQL_AFTER_GTIDS) '=' gtuidSet # gtidsUntilOption
| MASTER_LOG_FILE '=' STRING_LITERAL ',' MASTER_LOG_POS '=' decimalLiteral # masterLogUntilOption
| RELAY_LOG_FILE '=' STRING_LITERAL ',' RELAY_LOG_POS '=' decimalLiteral # relayLogUntilOption
| SQL_AFTER_MTS_GAPS # sqlGapsUntilOption
;
connectionOption
: USER '=' conOptUser = STRING_LITERAL # userConnectionOption
| PASSWORD '=' conOptPassword = STRING_LITERAL # passwordConnectionOption
| DEFAULT_AUTH '=' conOptDefAuth = STRING_LITERAL # defaultAuthConnectionOption
| PLUGIN_DIR '=' conOptPluginDir = STRING_LITERAL # pluginDirConnectionOption
;
gtuidSet
: uuidSet (',' uuidSet)*
| STRING_LITERAL
;
// XA Transactions
xaStartTransaction
: XA xaStart = (START | BEGIN) xid xaAction = (JOIN | RESUME)?
;
xaEndTransaction
: XA END xid (SUSPEND (FOR MIGRATE)?)?
;
xaPrepareStatement
: XA PREPARE xid
;
xaCommitWork
: XA COMMIT xid (ONE PHASE)?
;
xaRollbackWork
: XA ROLLBACK xid
;
xaRecoverWork
: XA RECOVER (CONVERT xid)?
;
// Prepared Statements
prepareStatement
: PREPARE uid FROM (query = STRING_LITERAL | variable = LOCAL_ID)
;
executeStatement
: EXECUTE uid (USING userVariables)?
;
deallocatePrepare
: dropFormat = (DEALLOCATE | DROP) PREPARE uid
;
// Compound Statements
routineBody
: blockStatement
| sqlStatement
;
// details
blockStatement
: (uid ':')? BEGIN (
(declareVariable SEMI)* (declareCondition SEMI)* (declareCursor SEMI)* (
declareHandler SEMI
)* procedureSqlStatement*
)? END uid?
;
caseStatement
: CASE (uid | expression)? caseAlternative+ (ELSE procedureSqlStatement+)? END CASE
;
ifStatement
: IF expression THEN thenStatements += procedureSqlStatement+ elifAlternative* (
ELSE elseStatements += procedureSqlStatement+
)? END IF
;
iterateStatement
: ITERATE uid
;
leaveStatement
: LEAVE uid
;
loopStatement
: (uid ':')? LOOP procedureSqlStatement+ END LOOP uid?
;
repeatStatement
: (uid ':')? REPEAT procedureSqlStatement+ UNTIL expression END REPEAT uid?
;
returnStatement
: RETURN expression
;
whileStatement
: (uid ':')? WHILE expression DO procedureSqlStatement+ END WHILE uid?
;
cursorStatement
: CLOSE uid # CloseCursor
| FETCH (NEXT? FROM)? uid INTO uidList # FetchCursor
| OPEN uid # OpenCursor
;
// details
declareVariable
: DECLARE uidList dataType (DEFAULT expression)?
;
declareCondition
: DECLARE uid CONDITION FOR (decimalLiteral | SQLSTATE VALUE? STRING_LITERAL)
;
declareCursor
: DECLARE uid CURSOR FOR selectStatement
;
declareHandler
: DECLARE handlerAction = (CONTINUE | EXIT | UNDO) HANDLER FOR handlerConditionValue (
',' handlerConditionValue
)* routineBody
;
handlerConditionValue
: decimalLiteral # handlerConditionCode
| SQLSTATE VALUE? STRING_LITERAL # handlerConditionState
| uid # handlerConditionName
| SQLWARNING # handlerConditionWarning
| NOT FOUND # handlerConditionNotfound
| SQLEXCEPTION # handlerConditionException
;
procedureSqlStatement
: (compoundStatement | sqlStatement) SEMI
;
caseAlternative
: WHEN (constant | expression) THEN procedureSqlStatement+
;
elifAlternative
: ELSEIF expression THEN procedureSqlStatement+
;
// Administration Statements
// Account management statements
alterUser
: ALTER USER userSpecification (',' userSpecification)* # alterUserMysqlV56
| ALTER USER ifExists? userAuthOption (',' userAuthOption)* (
REQUIRE (tlsNone = NONE | tlsOption (AND? tlsOption)*)
)? (WITH userResourceOption+)? (userPasswordOption | userLockOption)* (
COMMENT STRING_LITERAL
| ATTRIBUTE STRING_LITERAL
)? # alterUserMysqlV80
;
createUser
: CREATE USER userAuthOption (',' userAuthOption)* # createUserMysqlV56
| CREATE USER ifNotExists? userAuthOption (',' userAuthOption)* (
REQUIRE (tlsNone = NONE | tlsOption (AND? tlsOption)*)
)? (WITH userResourceOption+)? (userPasswordOption | userLockOption)* (
COMMENT STRING_LITERAL
| ATTRIBUTE STRING_LITERAL
)? # createUserMysqlV80
;
dropUser
: DROP USER ifExists? userName (',' userName)*
;
grantStatement
: GRANT privelegeClause (',' privelegeClause)* ON privilegeObject = (
TABLE
| FUNCTION
| PROCEDURE
)? privilegeLevel TO userAuthOption (',' userAuthOption)* (
REQUIRE (tlsNone = NONE | tlsOption (AND? tlsOption)*)
)? (WITH (GRANT OPTION | userResourceOption)*)? (AS userName WITH ROLE roleOption)?
| GRANT (userName | uid) (',' (userName | uid))* TO (userName | uid) (',' (userName | uid))* (
WITH ADMIN OPTION
)?
;
roleOption
: DEFAULT
| NONE
| ALL (EXCEPT userName (',' userName)*)?
| userName (',' userName)*
;
grantProxy
: GRANT PROXY ON fromFirst = userName TO toFirst = userName (',' toOther += userName)* (
WITH GRANT OPTION
)?
;
renameUser
: RENAME USER renameUserClause (',' renameUserClause)*
;
revokeStatement
: REVOKE privelegeClause (',' privelegeClause)* ON privilegeObject = (
TABLE
| FUNCTION
| PROCEDURE
)? privilegeLevel FROM userName (',' userName)* # detailRevoke
| REVOKE ALL PRIVILEGES? ',' GRANT OPTION FROM userName (',' userName)* # shortRevoke
| REVOKE uid (',' uid)* FROM (userName | uid) (',' (userName | uid))* # roleRevoke
;
revokeProxy
: REVOKE PROXY ON onUser = userName FROM fromFirst = userName (',' fromOther += userName)*
;
setPasswordStatement
: SET PASSWORD (FOR userName)? '=' (passwordFunctionClause | STRING_LITERAL)
;
// details
userSpecification
: userName userPasswordOption
;
userAuthOption
: userName IDENTIFIED BY PASSWORD hashed = STRING_LITERAL # hashAuthOption
| userName IDENTIFIED BY STRING_LITERAL (RETAIN CURRENT PASSWORD)? # stringAuthOption
| userName IDENTIFIED (WITH | VIA) // VIA is MariaDB-specific only
authenticationRule (OR authenticationRule)* # moduleAuthOption // OR is MariaDB-specific only
| userName # simpleAuthOption
;
authenticationRule
: authPlugin ((BY | USING | AS) STRING_LITERAL)? # module
| authPlugin (USING | AS) passwordFunctionClause # passwordModuleOption // MariaDB
;
tlsOption
: SSL
| X509
| CIPHER STRING_LITERAL
| ISSUER STRING_LITERAL
| SUBJECT STRING_LITERAL
;
userResourceOption
: MAX_QUERIES_PER_HOUR decimalLiteral
| MAX_UPDATES_PER_HOUR decimalLiteral
| MAX_CONNECTIONS_PER_HOUR decimalLiteral
| MAX_USER_CONNECTIONS decimalLiteral
;
userPasswordOption
: PASSWORD EXPIRE (
expireType = DEFAULT
| expireType = NEVER
| expireType = INTERVAL decimalLiteral DAY
)?
| PASSWORD HISTORY (DEFAULT | decimalLiteral)
| PASSWORD REUSE INTERVAL (DEFAULT | decimalLiteral DAY)
| PASSWORD REQUIRE CURRENT (OPTIONAL | DEFAULT)?
| FAILED_LOGIN_ATTEMPTS decimalLiteral
| PASSWORD_LOCK_TIME (decimalLiteral | UNBOUNDED)
;
userLockOption
: ACCOUNT lockType = (LOCK | UNLOCK)
;
privelegeClause
: privilege ('(' uidList ')')?
;
privilege
: ALL PRIVILEGES?
| ALTER ROUTINE?
| CREATE (TEMPORARY TABLES | ROUTINE | VIEW | USER | TABLESPACE | ROLE)?
| DELETE
| DROP (ROLE)?
| EVENT
| EXECUTE
| FILE
| GRANT OPTION
| INDEX
| INSERT
| LOCK TABLES
| PROCESS
| PROXY
| REFERENCES
| RELOAD
| REPLICATION (CLIENT | SLAVE | REPLICA | MASTER) ADMIN?
| SELECT
| SHOW (VIEW | DATABASES | SCHEMAS)
| SHUTDOWN
| SUPER
| TRIGGER
| UPDATE
| USAGE
| APPLICATION_PASSWORD_ADMIN
| AUDIT_ADMIN
| BACKUP_ADMIN
| BINLOG_ADMIN
| BINLOG_ENCRYPTION_ADMIN
| CLONE_ADMIN
| CONNECTION_ADMIN
| ENCRYPTION_KEY_ADMIN
| FIREWALL_ADMIN
| FIREWALL_USER
| FLUSH_OPTIMIZER_COSTS
| FLUSH_STATUS
| FLUSH_TABLES
| FLUSH_USER_RESOURCES
| GROUP_REPLICATION_ADMIN
| INNODB_REDO_LOG_ARCHIVE
| INNODB_REDO_LOG_ENABLE
| NDB_STORED_USER
| PASSWORDLESS_USER_ADMIN
| PERSIST_RO_VARIABLES_ADMIN
| REPLICATION_APPLIER
| REPLICATION_SLAVE_ADMIN
| RESOURCE_GROUP_ADMIN
| RESOURCE_GROUP_USER
| ROLE_ADMIN
| SERVICE_CONNECTION_ADMIN
| SESSION_VARIABLES_ADMIN
| SET_USER_ID
| SHOW_ROUTINE
| SYSTEM_USER
| SYSTEM_VARIABLES_ADMIN
| TABLE_ENCRYPTION_ADMIN
| VERSION_TOKEN_ADMIN
| XA_RECOVER_ADMIN
// MariaDB
| BINLOG_MONITOR
| BINLOG_REPLAY
| FEDERATED_ADMIN
| READ_ONLY_ADMIN
| REPLICATION_MASTER_ADMIN
| BINLOG (ADMIN | MONITOR | REPLAY)
| FEDERATED ADMIN
| (READ ONLY | READ_ONLY) ADMIN
| ADMIN OPTION
| CONNECTION ADMIN
| DELETE HISTORY
| REPLICA MONITOR
| GRANT OPTION
| SET USER
| SLAVE MONITOR
// MySQL on Amazon RDS
| LOAD FROM S3
| SELECT INTO S3
| INVOKE LAMBDA
;
privilegeLevel
: '*' # currentSchemaPriviLevel
| '*' '.' '*' # globalPrivLevel
| uid '.' '*' # definiteSchemaPrivLevel
| uid '.' uid # definiteFullTablePrivLevel
| uid dottedId # definiteFullTablePrivLevel2
| uid # definiteTablePrivLevel
;
renameUserClause
: fromFirst = userName TO toFirst = userName
;
// Table maintenance statements
analyzeTable
: ANALYZE actionOption = (NO_WRITE_TO_BINLOG | LOCAL)? (TABLE | TABLES) tables (
UPDATE HISTOGRAM ON fullColumnName (',' fullColumnName)* (WITH decimalLiteral BUCKETS)?
)? (DROP HISTOGRAM ON fullColumnName (',' fullColumnName)*)?
;
checkTable
: CHECK TABLE tables checkTableOption*
;
checksumTable
: CHECKSUM TABLE tables actionOption = (QUICK | EXTENDED)?
;
optimizeTable
: OPTIMIZE actionOption = (NO_WRITE_TO_BINLOG | LOCAL)? (TABLE | TABLES) tables waitNowaitClause? // waitNowaitClause is MariaDB-specific only
;
repairTable
: REPAIR actionOption = (NO_WRITE_TO_BINLOG | LOCAL)? TABLE tables QUICK? EXTENDED? USE_FRM?
;
// details
checkTableOption
: FOR UPGRADE
| QUICK
| FAST
| MEDIUM
| EXTENDED
| CHANGED
;
// Plugin and udf statements
createUdfunction
: CREATE orReplace? AGGREGATE? FUNCTION ifNotExists? uid // here orReplace is MariaDB-specific only
RETURNS returnType = (STRING | INTEGER | REAL | DECIMAL) SONAME STRING_LITERAL
;
installPlugin
: INSTALL PLUGIN uid SONAME STRING_LITERAL
;
uninstallPlugin
: UNINSTALL PLUGIN uid
;
// Set and show statements
setStatement
: SET variableClause ('=' | ':=') (expression | ON) (
',' variableClause ('=' | ':=') (expression | ON)
)* # setVariable
| SET charSet (charsetName | DEFAULT) # setCharset
| SET NAMES (charsetName (COLLATE collationName)? | DEFAULT) # setNames
| setPasswordStatement # setPassword
| setTransactionStatement # setTransaction
| setAutocommitStatement # setAutocommit
| SET fullId ('=' | ':=') expression (',' fullId ('=' | ':=') expression)* # setNewValueInsideTrigger
;
showStatement
: SHOW logFormat = (BINARY | MASTER) LOGS # showMasterLogs
| SHOW BINLOG EVENTS (IN filename = STRING_LITERAL)? (FROM fromPosition = decimalLiteral)? limitClause? # showBinLogEvents
| SHOW RELAYLOG (connectionName = STRING_LITERAL)? EVENTS (IN filename = STRING_LITERAL)? (
FROM fromPosition = decimalLiteral
)? limitClause? (FOR CHANNEL channelName = STRING_LITERAL)? # showRelayLogEvents
| SHOW showCommonEntity showFilter? # showObjectFilter
| SHOW FULL? columnsFormat = (COLUMNS | FIELDS) tableFormat = (FROM | IN) tableName (
schemaFormat = (FROM | IN) uid
)? showFilter? # showColumns
| SHOW CREATE schemaFormat = (DATABASE | SCHEMA) ifNotExists? uid # showCreateDb
| SHOW CREATE namedEntity = (EVENT | FUNCTION | PROCEDURE | SEQUENCE | TABLE | TRIGGER | VIEW) fullId # showCreateFullIdObject
| SHOW CREATE PACKAGE BODY? fullId # showCreatePackage
| SHOW CREATE USER userName # showCreateUser
| SHOW ENGINE engineName engineOption = (STATUS | MUTEX) # showEngine
| SHOW INNODB STATUS # showInnoDBStatus
| SHOW showGlobalInfoClause # showGlobalInfo
| SHOW errorFormat = (ERRORS | WARNINGS) limitClause? # showErrors
| SHOW COUNT '(' '*' ')' errorFormat = (ERRORS | WARNINGS) # showCountErrors
| SHOW showSchemaEntity (schemaFormat = (FROM | IN) uid)? showFilter? # showSchemaFilter
| SHOW routine = (FUNCTION | PROCEDURE) CODE fullId # showRoutine
| SHOW GRANTS (FOR userName)? # showGrants
| SHOW indexFormat = (INDEX | INDEXES | KEYS) tableFormat = (FROM | IN) tableName (
schemaFormat = (FROM | IN) uid
)? (WHERE expression)? # showIndexes
| SHOW OPEN TABLES (schemaFormat = (FROM | IN) fullId)? showFilter? # showOpenTables
| SHOW PROFILE (showProfileType (',' showProfileType)*)? (
FOR QUERY queryCount = decimalLiteral
)? limitClause? # showProfile
| SHOW (SLAVE | REPLICA) (connectionName = STRING_LITERAL)? STATUS (
FOR CHANNEL channelName = STRING_LITERAL
)? # showSlaveStatus
| SHOW (USER_STATISTICS | CLIENT_STATISTICS | INDEX_STATISTICS | TABLE_STATISTICS) # showUserstatPlugin
| SHOW EXPLAIN formatJsonStatement? FOR decimalLiteral # showExplain
| SHOW PACKAGE BODY? STATUS showFilter? # showPackageStatus
;
explainStatement
: EXPLAIN formatJsonStatement? FOR CONNECTION decimalLiteral # explainForConnection
;
// details
variableClause
: LOCAL_ID
| GLOBAL_ID
| ( ('@' '@')? (GLOBAL | SESSION | LOCAL))? uid
;
showCommonEntity
: CHARACTER SET
| COLLATION
| DATABASES
| SCHEMAS
| FUNCTION STATUS
| PROCEDURE STATUS
| (GLOBAL | SESSION)? (STATUS | VARIABLES)
;
showFilter
: LIKE STRING_LITERAL
| WHERE expression
;
showGlobalInfoClause
: STORAGE? ENGINES
| (MASTER | BINLOG) STATUS
| PLUGINS (SONAME (STRING_LITERAL | showFilter))?
| PRIVILEGES
| FULL? PROCESSLIST
| PROFILES
| LOCALES
| (SLAVE | REPLICA) HOSTS
| AUTHORS
| CONTRIBUTORS
| QUERY_RESPONSE_TIME
| ALL (SLAVES | REPLICAS) STATUS
| WSREP_MEMBERSHIP
| WSREP_STATUS
| TABLE TYPES
;
showSchemaEntity
: EVENTS
| TABLE STATUS
| FULL? TABLES
| TRIGGERS
;
showProfileType
: ALL
| BLOCK IO
| CONTEXT SWITCHES
| CPU
| IPC
| MEMORY
| PAGE FAULTS
| SOURCE
| SWAPS
;
// Other administrative statements
binlogStatement
: BINLOG STRING_LITERAL
;
cacheIndexStatement
: CACHE INDEX tableIndexes (',' tableIndexes)* (PARTITION '(' (uidList | ALL) ')')? IN schema = uid
;
flushStatement
: FLUSH flushFormat = (NO_WRITE_TO_BINLOG | LOCAL)? flushOption (',' flushOption)*
| FLUSH (USER_STATISTICS | CLIENT_STATISTICS | INDEX_STATISTICS | TABLE_STATISTICS)
;
killStatement
: KILL connectionFormat = (CONNECTION | QUERY)? expression
;
loadIndexIntoCache
: LOAD INDEX INTO CACHE loadedTableIndexes (',' loadedTableIndexes)*
;
// remark reset (maser | slave) describe in replication's
// statements section
resetStatement
: RESET QUERY CACHE
;
shutdownStatement
: SHUTDOWN
;
// details
tableIndexes
: tableName (indexFormat = (INDEX | KEY)? '(' uidList ')')?
;
flushOption
: (
DES_KEY_FILE
| HOSTS
| ( BINARY | ENGINE | ERROR | GENERAL | RELAY | SLOW)? LOGS
| OPTIMIZER_COSTS
| PRIVILEGES
| QUERY CACHE
| STATUS
| USER_RESOURCES
| TABLES (WITH READ LOCK)?
) # simpleFlushOption
| RELAY LOGS channelOption? # channelFlushOption
| (TABLE | TABLES) tables? flushTableOption? # tableFlushOption
;
flushTableOption
: WITH READ LOCK
| FOR EXPORT
;
loadedTableIndexes
: tableName (PARTITION '(' (partitionList = uidList | ALL) ')')? (
indexFormat = (INDEX | KEY)? '(' indexList = uidList ')'
)? (IGNORE LEAVES)?
;
// Utility Statements
simpleDescribeStatement
: command = (EXPLAIN | DESCRIBE | DESC) tableName (column = uid | pattern = STRING_LITERAL)?
;
fullDescribeStatement
: command = (EXPLAIN | DESCRIBE | DESC) (
formatType = (EXTENDED | PARTITIONS | FORMAT) '=' formatValue = (TRADITIONAL | JSON)
)? describeObjectClause
;
formatJsonStatement
: FORMAT '=' formatValue = JSON
;
helpStatement
: HELP STRING_LITERAL
;
useStatement
: USE uid
;
signalStatement
: SIGNAL (( SQLSTATE VALUE? stringLiteral) | ID | REVERSE_QUOTE_ID) (
SET signalConditionInformation ( ',' signalConditionInformation)*
)?
;
resignalStatement
: RESIGNAL (( SQLSTATE VALUE? stringLiteral) | ID | REVERSE_QUOTE_ID)? (
SET signalConditionInformation ( ',' signalConditionInformation)*
)?
;
signalConditionInformation
: (
CLASS_ORIGIN
| SUBCLASS_ORIGIN
| MESSAGE_TEXT
| MYSQL_ERRNO
| CONSTRAINT_CATALOG
| CONSTRAINT_SCHEMA
| CONSTRAINT_NAME
| CATALOG_NAME
| SCHEMA_NAME
| TABLE_NAME
| COLUMN_NAME
| CURSOR_NAME
) '=' (stringLiteral | DECIMAL_LITERAL | mysqlVariable | simpleId)
;
diagnosticsStatement
: GET (CURRENT | STACKED)? DIAGNOSTICS (
(variableClause '=' ( NUMBER | ROW_COUNT) ( ',' variableClause '=' ( NUMBER | ROW_COUNT))*)
| (
CONDITION (decimalLiteral | variableClause) variableClause '=' diagnosticsConditionInformationName (
',' variableClause '=' diagnosticsConditionInformationName
)*
)
)
;
diagnosticsConditionInformationName
: CLASS_ORIGIN
| SUBCLASS_ORIGIN
| RETURNED_SQLSTATE
| MESSAGE_TEXT
| MYSQL_ERRNO
| CONSTRAINT_CATALOG
| CONSTRAINT_SCHEMA
| CONSTRAINT_NAME
| CATALOG_NAME
| SCHEMA_NAME
| TABLE_NAME
| COLUMN_NAME
| CURSOR_NAME
;
// details
describeObjectClause
: (selectStatement | deleteStatement | insertStatement | replaceStatement | updateStatement) # describeStatements
| FOR CONNECTION uid # describeConnection
;
// Common Clauses
// DB Objects
fullId
: uid (DOT_ID | '.' uid)?
;
tableName
: fullId
;
roleName
: userName
| uid
;
fullColumnName
: uid (dottedId dottedId?)?
| . dottedId dottedId?
;
indexColumnName
: ((uid | STRING_LITERAL) ('(' decimalLiteral ')')? | expression) sortType = (ASC | DESC)?
;
simpleUserName
: STRING_LITERAL
| ID
| ADMIN
| keywordsCanBeId
;
hostName
: (LOCAL_ID | HOST_IP_ADDRESS | '@')
;
userName
: simpleUserName
| simpleUserName hostName
| currentUserExpression
;
mysqlVariable
: LOCAL_ID
| GLOBAL_ID
;
charsetName
: BINARY
| charsetNameBase
| STRING_LITERAL
| CHARSET_REVERSE_QOUTE_STRING
;
collationName
: uid
| STRING_LITERAL
;
engineName
: engineNameBase
| ID
| STRING_LITERAL
;
engineNameBase
: ARCHIVE
| BLACKHOLE
| CONNECT
| CSV
| FEDERATED
| INNODB
| MEMORY
| MRG_MYISAM
| MYISAM
| NDB
| NDBCLUSTER
| PERFORMANCE_SCHEMA
| TOKUDB
;
// MariaDB
encryptedLiteral
: ENCRYPTED
| STRING_LITERAL
;
uuidSet
: decimalLiteral '-' decimalLiteral '-' decimalLiteral '-' decimalLiteral '-' decimalLiteral (
':' decimalLiteral '-' decimalLiteral
)+
;
xid
: globalTableUid = xuidStringId (',' qualifier = xuidStringId (',' idFormat = decimalLiteral)?)?
;
xuidStringId
: STRING_LITERAL
| BIT_STRING
| HEXADECIMAL_LITERAL+
;
authPlugin
: uid
| STRING_LITERAL
;
uid
: simpleId
//| DOUBLE_QUOTE_ID
//| REVERSE_QUOTE_ID
| CHARSET_REVERSE_QOUTE_STRING
| STRING_LITERAL
;
simpleId
: ID
| charsetNameBase
| transactionLevelBase
| engineNameBase
| privilegesBase
| intervalTypeBase
| dataTypeBase
| keywordsCanBeId
| scalarFunctionName
;
dottedId
: DOT_ID
| '.' uid
;
// Literals
decimalLiteral
: DECIMAL_LITERAL
| ZERO_DECIMAL
| ONE_DECIMAL
| TWO_DECIMAL
| REAL_LITERAL
;
fileSizeLiteral
: FILESIZE_LITERAL
| decimalLiteral
;
stringLiteral
: (STRING_CHARSET_NAME? STRING_LITERAL | START_NATIONAL_STRING_LITERAL) STRING_LITERAL+
| (STRING_CHARSET_NAME? STRING_LITERAL | START_NATIONAL_STRING_LITERAL) (COLLATE collationName)?
;
booleanLiteral
: TRUE
| FALSE
;
hexadecimalLiteral
: STRING_CHARSET_NAME? HEXADECIMAL_LITERAL
;
nullNotnull
: NOT? (NULL_LITERAL | NULL_SPEC_LITERAL)
;
constant
: stringLiteral
| decimalLiteral
| '-' decimalLiteral
| hexadecimalLiteral
| booleanLiteral
| REAL_LITERAL
| BIT_STRING
| NOT? nullLiteral = (NULL_LITERAL | NULL_SPEC_LITERAL)
;
// Data Types
dataType
: typeName = (
CHAR
| CHARACTER
| VARCHAR
| TINYTEXT
| TEXT
| MEDIUMTEXT
| LONGTEXT
| NCHAR
| NVARCHAR
| LONG
) VARYING? lengthOneDimension? BINARY? (charSet charsetName)? (COLLATE collationName | BINARY)? # stringDataType
| NATIONAL typeName = (VARCHAR | CHARACTER) lengthOneDimension? BINARY? # nationalStringDataType
| NCHAR typeName = VARCHAR lengthOneDimension? BINARY? # nationalStringDataType
| NATIONAL typeName = (CHAR | CHARACTER) VARYING lengthOneDimension? BINARY? # nationalVaryingStringDataType
| typeName = (
TINYINT
| SMALLINT
| MEDIUMINT
| INT
| INTEGER
| BIGINT
| MIDDLEINT
| INT1
| INT2
| INT3
| INT4
| INT8
) lengthOneDimension? (SIGNED | UNSIGNED | ZEROFILL)* # dimensionDataType
| typeName = REAL lengthTwoDimension? (SIGNED | UNSIGNED | ZEROFILL)* # dimensionDataType
| typeName = DOUBLE PRECISION? lengthTwoDimension? (SIGNED | UNSIGNED | ZEROFILL)* # dimensionDataType
| typeName = (DECIMAL | DEC | FIXED | NUMERIC | FLOAT | FLOAT4 | FLOAT8) lengthTwoOptionalDimension? (
SIGNED
| UNSIGNED
| ZEROFILL
)* # dimensionDataType
| typeName = (DATE | TINYBLOB | MEDIUMBLOB | LONGBLOB | BOOL | BOOLEAN | SERIAL) # simpleDataType
| typeName = (BIT | TIME | TIMESTAMP | DATETIME | BINARY | VARBINARY | BLOB | YEAR) lengthOneDimension? # dimensionDataType
| typeName = (ENUM | SET) collectionOptions BINARY? (charSet charsetName)? # collectionDataType
| typeName = (
GEOMETRYCOLLECTION
| GEOMCOLLECTION
| LINESTRING
| MULTILINESTRING
| MULTIPOINT
| MULTIPOLYGON
| POINT
| POLYGON
| JSON
| GEOMETRY
) # spatialDataType
| typeName = LONG VARCHAR? BINARY? (charSet charsetName)? (COLLATE collationName)? # longVarcharDataType // LONG VARCHAR is the same as LONG
| LONG VARBINARY # longVarbinaryDataType
;
collectionOptions
: '(' collectionOption (',' collectionOption)* ')'
;
collectionOption
: STRING_LITERAL
;
convertedDataType
: (
typeName = (BINARY | NCHAR) lengthOneDimension?
| typeName = CHAR lengthOneDimension? (charSet charsetName)?
| typeName = (DATE | DATETIME | TIME | JSON | INT | INTEGER)
| typeName = DECIMAL lengthTwoOptionalDimension?
| (SIGNED | UNSIGNED) INTEGER?
) ARRAY?
;
lengthOneDimension
: '(' decimalLiteral ')'
;
lengthTwoDimension
: '(' decimalLiteral ',' decimalLiteral ')'
;
lengthTwoOptionalDimension
: '(' decimalLiteral (',' decimalLiteral)? ')'
;
// Common Lists
uidList
: uid (',' uid)*
;
tables
: tableName (',' tableName)*
;
indexColumnNames
: '(' indexColumnName (',' indexColumnName)* ')'
;
expressions
: expression (',' expression)*
;
expressionsWithDefaults
: expressionOrDefault (',' expressionOrDefault)*
;
constants
: constant (',' constant)*
;
simpleStrings
: STRING_LITERAL (',' STRING_LITERAL)*
;
userVariables
: LOCAL_ID (',' LOCAL_ID)*
;
// Common Expressons
defaultValue
: NULL_LITERAL
| CAST '(' expression AS convertedDataType ')'
| unaryOperator? constant
| currentTimestamp (ON UPDATE currentTimestamp)?
| '(' expression ')'
| (LASTVAL | NEXTVAL) '(' fullId ')' // MariaDB-specific
| '(' (PREVIOUS | NEXT) VALUE FOR fullId ')' // MariaDB-specific
| expression // MariaDB
;
currentTimestamp
: (
(CURRENT_TIMESTAMP | LOCALTIME | LOCALTIMESTAMP | CURDATE | CURTIME) // MariaDB-specific
('(' decimalLiteral? ')')?
| NOW '(' decimalLiteral? ')'
)
;
expressionOrDefault
: expression
| DEFAULT
;
ifExists
: IF EXISTS
;
ifNotExists
: IF NOT EXISTS
;
orReplace
: OR REPLACE
;
// MariaDB-specific
waitNowaitClause
: WAIT decimalLiteral
| NOWAIT
;
lockOption
: waitNowaitClause
| SKIP_ LOCKED
;
// Functions
functionCall
: specificFunction # specificFunctionCall
| aggregateWindowedFunction # aggregateFunctionCall
| nonAggregateWindowedFunction # nonAggregateFunctionCall
| scalarFunctionName '(' functionArgs? ')' # scalarFunctionCall
| fullId '(' functionArgs? ')' # udfFunctionCall
| passwordFunctionClause # passwordFunctionCall
;
specificFunction
: (
CURRENT_DATE
| CURRENT_TIME
| CURRENT_TIMESTAMP
| CURDATE
| CURTIME // MariaDB-specific only
| CURRENT_USER
| LOCALTIME
| UTC_TIMESTAMP
| SCHEMA
) ('(' ')')? # simpleFunctionCall
| CONVERT '(' expression separator = ',' convertedDataType ')' # dataTypeFunctionCall
| CONVERT '(' expression USING charsetName ')' # dataTypeFunctionCall
| CAST '(' expression AS convertedDataType ')' # dataTypeFunctionCall
| VALUES '(' fullColumnName ')' # valuesFunctionCall
| CASE expression caseFuncAlternative+ (ELSE elseArg = functionArg)? END # caseExpressionFunctionCall
| CASE caseFuncAlternative+ (ELSE elseArg = functionArg)? END # caseFunctionCall
| CHAR '(' functionArgs (USING charsetName)? ')' # charFunctionCall
| POSITION '(' (positionString = stringLiteral | positionExpression = expression) IN (
inString = stringLiteral
| inExpression = expression
) ')' # positionFunctionCall
| (SUBSTR | SUBSTRING) '(' (sourceString = stringLiteral | sourceExpression = expression) FROM (
fromDecimal = decimalLiteral
| fromExpression = expression
) (FOR ( forDecimal = decimalLiteral | forExpression = expression))? ')' # substrFunctionCall
| TRIM '(' positioinForm = (BOTH | LEADING | TRAILING) (
sourceString = stringLiteral
| sourceExpression = expression
)? FROM (fromString = stringLiteral | fromExpression = expression) ')' # trimFunctionCall
| TRIM '(' (sourceString = stringLiteral | sourceExpression = expression) FROM (
fromString = stringLiteral
| fromExpression = expression
) ')' # trimFunctionCall
| WEIGHT_STRING '(' (stringLiteral | expression) (
AS stringFormat = (CHAR | BINARY) '(' decimalLiteral ')'
)? levelsInWeightString? ')' # weightFunctionCall
| EXTRACT '(' intervalType FROM (sourceString = stringLiteral | sourceExpression = expression) ')' # extractFunctionCall
| GET_FORMAT '(' datetimeFormat = (DATE | TIME | DATETIME) ',' stringLiteral ')' # getFormatFunctionCall
| JSON_VALUE '(' expression ',' expression (RETURNING convertedDataType)? jsonOnEmpty? jsonOnError? ')' # jsonValueFunctionCall
;
caseFuncAlternative
: WHEN condition = functionArg THEN consequent = functionArg
;
levelsInWeightString
: LEVEL levelInWeightListElement (',' levelInWeightListElement)* # levelWeightList
| LEVEL firstLevel = decimalLiteral '-' lastLevel = decimalLiteral # levelWeightRange
;
levelInWeightListElement
: decimalLiteral orderType = (ASC | DESC | REVERSE)?
;
aggregateWindowedFunction
: (AVG | MAX | MIN | SUM) '(' aggregator = (ALL | DISTINCT)? functionArg ')' overClause?
| COUNT '(' (
starArg = '*'
| aggregator = ALL? functionArg
| aggregator = DISTINCT functionArgs
) ')' overClause?
| (
BIT_AND
| BIT_OR
| BIT_XOR
| STD
| STDDEV
| STDDEV_POP
| STDDEV_SAMP
| VAR_POP
| VAR_SAMP
| VARIANCE
) '(' aggregator = ALL? functionArg ')' overClause?
| GROUP_CONCAT '(' aggregator = DISTINCT? functionArgs (
ORDER BY orderByExpression (',' orderByExpression)*
)? (SEPARATOR separator = STRING_LITERAL)? ')'
;
nonAggregateWindowedFunction
: (LAG | LEAD) '(' expression (',' decimalLiteral)? (',' decimalLiteral)? ')' overClause
| (FIRST_VALUE | LAST_VALUE) '(' expression ')' overClause
| (CUME_DIST | DENSE_RANK | PERCENT_RANK | RANK | ROW_NUMBER) '(' ')' overClause
| NTH_VALUE '(' expression ',' decimalLiteral ')' overClause
| NTILE '(' decimalLiteral ')' overClause
;
overClause
: OVER ('(' windowSpec? ')' | windowName)
;
windowSpec
: windowName? partitionClause? orderByClause? frameClause?
;
windowName
: uid
;
frameClause
: frameUnits frameExtent
;
frameUnits
: ROWS
| RANGE
;
frameExtent
: frameRange
| frameBetween
;
frameBetween
: BETWEEN frameRange AND frameRange
;
frameRange
: CURRENT ROW
| UNBOUNDED (PRECEDING | FOLLOWING)
| expression (PRECEDING | FOLLOWING)
;
partitionClause
: PARTITION BY expression (',' expression)*
;
scalarFunctionName
: functionNameBase
| ASCII
| CURDATE
| CURRENT_DATE
| CURRENT_TIME
| CURRENT_TIMESTAMP
| CURTIME
| DATE_ADD
| DATE_SUB
| IF
| INSERT
| LOCALTIME
| LOCALTIMESTAMP
| MID
| NOW
| REPLACE
| SUBSTR
| SUBSTRING
| SYSDATE
| TRIM
| UTC_DATE
| UTC_TIME
| UTC_TIMESTAMP
;
passwordFunctionClause
: functionName = (PASSWORD | OLD_PASSWORD) '(' functionArg ')'
;
functionArgs
: (constant | fullColumnName | functionCall | expression) (
',' (constant | fullColumnName | functionCall | expression)
)*
;
functionArg
: constant
| fullColumnName
| functionCall
| expression
;
// Expressions, predicates
// Simplified approach for expression
expression
: notOperator = (NOT | '!') expression # notExpression
| expression logicalOperator expression # logicalExpression
| predicate IS NOT? testValue = (TRUE | FALSE | UNKNOWN) # isExpression
| predicate # predicateExpression
;
predicate
: predicate NOT? IN '(' (selectStatement | expressions) ')' # inPredicate
| predicate IS nullNotnull # isNullPredicate
| left = predicate comparisonOperator right = predicate # binaryComparisonPredicate
| predicate comparisonOperator quantifier = (ALL | ANY | SOME) '(' selectStatement ')' # subqueryComparisonPredicate
| predicate NOT? BETWEEN predicate AND predicate # betweenPredicate
| predicate SOUNDS LIKE predicate # soundsLikePredicate
| predicate NOT? LIKE predicate (ESCAPE STRING_LITERAL)? # likePredicate
| predicate NOT? regex = (REGEXP | RLIKE) predicate # regexpPredicate
| predicate MEMBER OF '(' predicate ')' # jsonMemberOfPredicate
| expressionAtom # expressionAtomPredicate
;
// Add in ASTVisitor nullNotnull in constant
expressionAtom
: constant # constantExpressionAtom
| fullColumnName # fullColumnNameExpressionAtom
| functionCall # functionCallExpressionAtom
| expressionAtom COLLATE collationName # collateExpressionAtom
| mysqlVariable # mysqlVariableExpressionAtom
| unaryOperator expressionAtom # unaryExpressionAtom
| BINARY expressionAtom # binaryExpressionAtom
| LOCAL_ID VAR_ASSIGN expressionAtom # variableAssignExpressionAtom
| '(' expression (',' expression)* ')' # nestedExpressionAtom
| ROW '(' expression (',' expression)+ ')' # nestedRowExpressionAtom
| EXISTS '(' selectStatement ')' # existsExpressionAtom
| '(' selectStatement ')' # subqueryExpressionAtom
| INTERVAL expression intervalType # intervalExpressionAtom
| left = expressionAtom bitOperator right = expressionAtom # bitExpressionAtom
| left = expressionAtom mathOperator right = expressionAtom # mathExpressionAtom
| left = expressionAtom jsonOperator right = expressionAtom # jsonExpressionAtom
;
unaryOperator
: '!'
| '~'
| '+'
| '-'
| NOT
;
comparisonOperator
: '='
| '>'
| '<'
| '<' '='
| '>' '='
| '<' '>'
| '!' '='
| '<' '=' '>'
;
logicalOperator
: AND
| '&' '&'
| XOR
| OR
| '|' '|'
;
bitOperator
: '<' '<'
| '>' '>'
| '&'
| '^'
| '|'
;
mathOperator
: '*'
| '/'
| '%'
| DIV
| MOD
| '+'
| '-'
;
jsonOperator
: '-' '>'
| '-' '>' '>'
;
// Simple id sets
// (that keyword, which can be id)
charsetNameBase
: ARMSCII8
| ASCII
| BIG5
| BINARY
| CP1250
| CP1251
| CP1256
| CP1257
| CP850
| CP852
| CP866
| CP932
| DEC8
| EUCJPMS
| EUCKR
| GB18030
| GB2312
| GBK
| GEOSTD8
| GREEK
| HEBREW
| HP8
| KEYBCS2
| KOI8R
| KOI8U
| LATIN1
| LATIN2
| LATIN5
| LATIN7
| MACCE
| MACROMAN
| SJIS
| SWE7
| TIS620
| UCS2
| UJIS
| UTF16
| UTF16LE
| UTF32
| UTF8
| UTF8MB3
| UTF8MB4
;
transactionLevelBase
: REPEATABLE
| COMMITTED
| UNCOMMITTED
| SERIALIZABLE
;
privilegesBase
: TABLES
| ROUTINE
| EXECUTE
| FILE
| PROCESS
| RELOAD
| SHUTDOWN
| SUPER
| PRIVILEGES
;
intervalTypeBase
: QUARTER
| MONTH
| DAY
| HOUR
| MINUTE
| WEEK
| SECOND
| MICROSECOND
;
dataTypeBase
: DATE
| TIME
| TIMESTAMP
| DATETIME
| YEAR
| ENUM
| TEXT
;
keywordsCanBeId
: ACCOUNT
| ACTION
| ADMIN
| AFTER
| AGGREGATE
| ALGORITHM
| ANY
| AT
| AUDIT_ADMIN
| AUTHORS
| AUTOCOMMIT
| AUTOEXTEND_SIZE
| AUTO_INCREMENT
| AVG
| AVG_ROW_LENGTH
| ATTRIBUTE
| BACKUP_ADMIN
| BEGIN
| BINLOG
| BINLOG_ADMIN
| BINLOG_ENCRYPTION_ADMIN
| BIT
| BIT_AND
| BIT_OR
| BIT_XOR
| BLOCK
| BODY
| BOOL
| BOOLEAN
| BTREE
| BUCKETS
| CACHE
| CASCADED
| CHAIN
| CHANGED
| CHANNEL
| CHECKSUM
| PAGE_CHECKSUM
| CATALOG_NAME
| CIPHER
| CLASS_ORIGIN
| CLIENT
| CLONE_ADMIN
| CLOSE
| CLUSTERING
| COALESCE
| CODE
| COLUMNS
| COLUMN_FORMAT
| COLUMN_NAME
| COMMENT
| COMMIT
| COMPACT
| COMPLETION
| COMPRESSED
| COMPRESSION
| CONCURRENT
| CONDITION
| CONNECT
| CONNECTION
| CONNECTION_ADMIN
| CONSISTENT
| CONSTRAINT_CATALOG
| CONSTRAINT_NAME
| CONSTRAINT_SCHEMA
| CONTAINS
| CONTEXT
| CONTRIBUTORS
| COPY
| COUNT
| CPU
| CURRENT
| CURRENT_USER
| CURSOR_NAME
| DATA
| DATAFILE
| DEALLOCATE
| DEFAULT
| DEFAULT_AUTH
| DEFINER
| DELAY_KEY_WRITE
| DES_KEY_FILE
| DIAGNOSTICS
| DIRECTORY
| DISABLE
| DISCARD
| DISK
| DO
| DUMPFILE
| DUPLICATE
| DYNAMIC
| EMPTY
| ENABLE
| ENCRYPTION
| ENCRYPTION_KEY_ADMIN
| END
| ENDS
| ENGINE
| ENGINE_ATTRIBUTE
| ENGINES
| ERROR
| ERRORS
| ESCAPE
| EUR
| EVEN
| EVENT
| EVENTS
| EVERY
| EXCEPT
| EXCHANGE
| EXCLUSIVE
| EXPIRE
| EXPORT
| EXTENDED
| EXTENT_SIZE
| FAILED_LOGIN_ATTEMPTS
| FAST
| FAULTS
| FIELDS
| FILE_BLOCK_SIZE
| FILTER
| FIREWALL_ADMIN
| FIREWALL_USER
| FIRST
| FIXED
| FLUSH
| FOLLOWS
| FOUND
| FULL
| FUNCTION
| GENERAL
| GLOBAL
| GRANTS
| GROUP
| GROUP_CONCAT
| GROUP_REPLICATION
| GROUP_REPLICATION_ADMIN
| HANDLER
| HASH
| HELP
| HISTORY
| HOST
| HOSTS
| IDENTIFIED
| IGNORED
| IGNORE_SERVER_IDS
| IMPORT
| INDEXES
| INITIAL_SIZE
| INNODB_REDO_LOG_ARCHIVE
| INPLACE
| INSERT_METHOD
| INSTALL
| INSTANCE
| INSTANT
| INTERNAL
| INVOKE
| INVOKER
| IO
| IO_THREAD
| IPC
| ISO
| ISOLATION
| ISSUER
| JIS
| JSON
| KEY_BLOCK_SIZE
| LAMBDA
| LANGUAGE
| LAST
| LATERAL
| LEAVES
| LESS
| LEVEL
| LIST
| LOCAL
| LOCALES
| LOGFILE
| LOGS
| MASTER
| MASTER_AUTO_POSITION
| MASTER_CONNECT_RETRY
| MASTER_DELAY
| MASTER_HEARTBEAT_PERIOD
| MASTER_HOST
| MASTER_LOG_FILE
| MASTER_LOG_POS
| MASTER_PASSWORD
| MASTER_PORT
| MASTER_RETRY_COUNT
| MASTER_SSL
| MASTER_SSL_CA
| MASTER_SSL_CAPATH
| MASTER_SSL_CERT
| MASTER_SSL_CIPHER
| MASTER_SSL_CRL
| MASTER_SSL_CRLPATH
| MASTER_SSL_KEY
| MASTER_TLS_VERSION
| MASTER_USER
| MAX_CONNECTIONS_PER_HOUR
| MAX_QUERIES_PER_HOUR
| MAX
| MAX_ROWS
| MAX_SIZE
| MAX_UPDATES_PER_HOUR
| MAX_USER_CONNECTIONS
| MEDIUM
| MEMBER
| MEMORY
| MERGE
| MESSAGE_TEXT
| MID
| MIGRATE
| MIN
| MIN_ROWS
| MODE
| MODIFY
| MUTEX
| MYSQL
| MYSQL_ERRNO
| NAME
| NAMES
| NCHAR
| NDB_STORED_USER
| NESTED
| NEVER
| NEXT
| NO
| NOCOPY
| NODEGROUP
| NONE
| NOWAIT
| NUMBER
| ODBC
| OFFLINE
| OFFSET
| OF
| OJ
| OLD_PASSWORD
| ONE
| ONLINE
| ONLY
| OPEN
| OPTIMIZER_COSTS
| OPTIONAL
| OPTIONS
| ORDER
| ORDINALITY
| OWNER
| PACKAGE
| PACK_KEYS
| PAGE
| PARSER
| PARTIAL
| PARTITIONING
| PARTITIONS
| PASSWORD
| PASSWORDLESS_USER_ADMIN
| PASSWORD_LOCK_TIME
| PATH
| PERSIST_RO_VARIABLES_ADMIN
| PHASE
| PLUGINS
| PLUGIN_DIR
| PLUGIN
| PORT
| PRECEDES
| PREPARE
| PRESERVE
| PREV
| PRIMARY
| PROCESSLIST
| PROFILE
| PROFILES
| PROXY
| QUERY
| QUERY_RESPONSE_TIME
| QUICK
| REBUILD
| RECOVER
| RECURSIVE
| REDO_BUFFER_SIZE
| REDUNDANT
| RELAY
| RELAYLOG
| RELAY_LOG_FILE
| RELAY_LOG_POS
| REMOVE
| REORGANIZE
| REPAIR
| REPLICAS
| REPLICATE_DO_DB
| REPLICATE_DO_TABLE
| REPLICATE_IGNORE_DB
| REPLICATE_IGNORE_TABLE
| REPLICATE_REWRITE_DB
| REPLICATE_WILD_DO_TABLE
| REPLICATE_WILD_IGNORE_TABLE
| REPLICATION
| REPLICATION_APPLIER
| REPLICATION_SLAVE_ADMIN
| RESET
| RESOURCE_GROUP_ADMIN
| RESOURCE_GROUP_USER
| RESUME
| RETURNED_SQLSTATE
| RETURNS
| REUSE
| ROLE
| ROLE_ADMIN
| ROLLBACK
| ROLLUP
| ROTATE
| ROW
| ROWS
| ROW_FORMAT
| RTREE
| S3
| SAVEPOINT
| SCHEDULE
| SCHEMA_NAME
| SECURITY
| SECONDARY_ENGINE_ATTRIBUTE
| SERIAL
| SERVER
| SESSION
| SESSION_VARIABLES_ADMIN
| SET_USER_ID
| SHARE
| SHARED
| SHOW_ROUTINE
| SIGNED
| SIMPLE
| SLAVE
| SLAVES
| SLOW
| SNAPSHOT
| SOCKET
| SOME
| SONAME
| SOUNDS
| SOURCE
| SQL_AFTER_GTIDS
| SQL_AFTER_MTS_GAPS
| SQL_BEFORE_GTIDS
| SQL_BUFFER_RESULT
| SQL_CACHE
| SQL_NO_CACHE
| SQL_THREAD
| STACKED
| START
| STARTS
| STATS_AUTO_RECALC
| STATS_PERSISTENT
| STATS_SAMPLE_PAGES
| STATUS
| STD
| STDDEV
| STDDEV_POP
| STDDEV_SAMP
| STOP
| STORAGE
| STRING
| SUBCLASS_ORIGIN
| SUBJECT
| SUBPARTITION
| SUBPARTITIONS
| SUM
| SUSPEND
| SWAPS
| SWITCHES
| SYSTEM_VARIABLES_ADMIN
| TABLE_NAME
| TABLESPACE
| TABLE_ENCRYPTION_ADMIN
| TABLE_TYPE
| TEMPORARY
| TEMPTABLE
| THAN
| TRADITIONAL
| TRANSACTION
| TRANSACTIONAL
| TRIGGERS
| TRUNCATE
| TYPES
| UNBOUNDED
| UNDEFINED
| UNDOFILE
| UNDO_BUFFER_SIZE
| UNINSTALL
| UNKNOWN
| UNTIL
| UPGRADE
| USA
| USER
| USE_FRM
| USER_RESOURCES
| VALIDATION
| VALUE
| VAR_POP
| VAR_SAMP
| VARIABLES
| VARIANCE
| VERSION_TOKEN_ADMIN
| VIEW
| VIRTUAL
| WAIT
| WARNINGS
| WITHOUT
| WORK
| WRAPPER
| WSREP_MEMBERSHIP
| WSREP_STATUS
| X509
| XA
| XA_RECOVER_ADMIN
| XML
// MariaDB-specific only
| BINLOG_MONITOR
| BINLOG_REPLAY
| CURRENT_ROLE
| CYCLE
| ENCRYPTED
| ENCRYPTION_KEY_ID
| FEDERATED_ADMIN
| INCREMENT
| LASTVAL
| LOCKED
| MAXVALUE
| MINVALUE
| NEXTVAL
| NOCACHE
| NOCYCLE
| NOMAXVALUE
| NOMINVALUE
| PERSISTENT
| PREVIOUS
| READ_ONLY_ADMIN
| REPLICA
| REPLICATION_MASTER_ADMIN
| RESTART
| SEQUENCE
| SETVAL
| SKIP_
| STATEMENT
| VIA
| MONITOR
| READ_ONLY
| REPLAY
| USER_STATISTICS
| CLIENT_STATISTICS
| INDEX_STATISTICS
| TABLE_STATISTICS
;
functionNameBase
: ABS
| ACOS
| ADDDATE
| ADDTIME
| AES_DECRYPT
| AES_ENCRYPT
| AREA
| ASBINARY
| ASIN
| ASTEXT
| ASWKB
| ASWKT
| ASYMMETRIC_DECRYPT
| ASYMMETRIC_DERIVE
| ASYMMETRIC_ENCRYPT
| ASYMMETRIC_SIGN
| ASYMMETRIC_VERIFY
| ATAN
| ATAN2
| BENCHMARK
| BIN
| BIT_COUNT
| BIT_LENGTH
| BUFFER
| CEIL
| CEILING
| CENTROID
| CHARACTER_LENGTH
| CHARSET
| CHAR_LENGTH
| COERCIBILITY
| COLLATION
| COMPRESS
| CONCAT
| CONCAT_WS
| CONNECTION_ID
| CONV
| CONVERT_TZ
| COS
| COT
| COUNT
| CRC32
| CREATE_ASYMMETRIC_PRIV_KEY
| CREATE_ASYMMETRIC_PUB_KEY
| CREATE_DH_PARAMETERS
| CREATE_DIGEST
| CROSSES
| CUME_DIST
| DATABASE
| DATE
| DATEDIFF
| DATE_FORMAT
| DAY
| DAYNAME
| DAYOFMONTH
| DAYOFWEEK
| DAYOFYEAR
| DECODE
| DEGREES
| DENSE_RANK
| DES_DECRYPT
| DES_ENCRYPT
| DIMENSION
| DISJOINT
| ELT
| ENCODE
| ENCRYPT
| ENDPOINT
| ENVELOPE
| EQUALS
| EXP
| EXPORT_SET
| EXTERIORRING
| EXTRACTVALUE
| FIELD
| FIND_IN_SET
| FIRST_VALUE
| FLOOR
| FORMAT
| FOUND_ROWS
| FROM_BASE64
| FROM_DAYS
| FROM_UNIXTIME
| GEOMCOLLFROMTEXT
| GEOMCOLLFROMWKB
| GEOMETRYCOLLECTION
| GEOMETRYCOLLECTIONFROMTEXT
| GEOMETRYCOLLECTIONFROMWKB
| GEOMETRYFROMTEXT
| GEOMETRYFROMWKB
| GEOMETRYN
| GEOMETRYTYPE
| GEOMFROMTEXT
| GEOMFROMWKB
| GET_FORMAT
| GET_LOCK
| GLENGTH
| GREATEST
| GTID_SUBSET
| GTID_SUBTRACT
| HEX
| HOUR
| IFNULL
| INET6_ATON
| INET6_NTOA
| INET_ATON
| INET_NTOA
| INSTR
| INTERIORRINGN
| INTERSECTS
| INVISIBLE
| ISCLOSED
| ISEMPTY
| ISNULL
| ISSIMPLE
| IS_FREE_LOCK
| IS_IPV4
| IS_IPV4_COMPAT
| IS_IPV4_MAPPED
| IS_IPV6
| IS_USED_LOCK
| LAG
| LAST_INSERT_ID
| LAST_VALUE
| LCASE
| LEAD
| LEAST
| LEFT
| LENGTH
| LINEFROMTEXT
| LINEFROMWKB
| LINESTRING
| LINESTRINGFROMTEXT
| LINESTRINGFROMWKB
| LN
| LOAD_FILE
| LOCATE
| LOG
| LOG10
| LOG2
| LOWER
| LPAD
| LTRIM
| MAKEDATE
| MAKETIME
| MAKE_SET
| MASTER_POS_WAIT
| MBRCONTAINS
| MBRDISJOINT
| MBREQUAL
| MBRINTERSECTS
| MBROVERLAPS
| MBRTOUCHES
| MBRWITHIN
| MD5
| MICROSECOND
| MINUTE
| MLINEFROMTEXT
| MLINEFROMWKB
| MOD
| MONTH
| MONTHNAME
| MPOINTFROMTEXT
| MPOINTFROMWKB
| MPOLYFROMTEXT
| MPOLYFROMWKB
| MULTILINESTRING
| MULTILINESTRINGFROMTEXT
| MULTILINESTRINGFROMWKB
| MULTIPOINT
| MULTIPOINTFROMTEXT
| MULTIPOINTFROMWKB
| MULTIPOLYGON
| MULTIPOLYGONFROMTEXT
| MULTIPOLYGONFROMWKB
| NAME_CONST
| NTH_VALUE
| NTILE
| NULLIF
| NUMGEOMETRIES
| NUMINTERIORRINGS
| NUMPOINTS
| OCT
| OCTET_LENGTH
| ORD
| OVERLAPS
| PERCENT_RANK
| PERIOD_ADD
| PERIOD_DIFF
| PI
| POINT
| POINTFROMTEXT
| POINTFROMWKB
| POINTN
| POLYFROMTEXT
| POLYFROMWKB
| POLYGON
| POLYGONFROMTEXT
| POLYGONFROMWKB
| POSITION
| POW
| POWER
| QUARTER
| QUOTE
| RADIANS
| RAND
| RANK
| RANDOM_BYTES
| RELEASE_LOCK
| REVERSE
| RIGHT
| ROUND
| ROW_COUNT
| ROW_NUMBER
| RPAD
| RTRIM
| SCHEMA
| SECOND
| SEC_TO_TIME
| SESSION_USER
| SESSION_VARIABLES_ADMIN
| SHA
| SHA1
| SHA2
| SIGN
| SIN
| SLEEP
| SOUNDEX
| SQL_THREAD_WAIT_AFTER_GTIDS
| SQRT
| SRID
| STARTPOINT
| STRCMP
| STR_TO_DATE
| ST_AREA
| ST_ASBINARY
| ST_ASTEXT
| ST_ASWKB
| ST_ASWKT
| ST_BUFFER
| ST_CENTROID
| ST_CONTAINS
| ST_CROSSES
| ST_DIFFERENCE
| ST_DIMENSION
| ST_DISJOINT
| ST_DISTANCE
| ST_ENDPOINT
| ST_ENVELOPE
| ST_EQUALS
| ST_EXTERIORRING
| ST_GEOMCOLLFROMTEXT
| ST_GEOMCOLLFROMTXT
| ST_GEOMCOLLFROMWKB
| ST_GEOMETRYCOLLECTIONFROMTEXT
| ST_GEOMETRYCOLLECTIONFROMWKB
| ST_GEOMETRYFROMTEXT
| ST_GEOMETRYFROMWKB
| ST_GEOMETRYN
| ST_GEOMETRYTYPE
| ST_GEOMFROMTEXT
| ST_GEOMFROMWKB
| ST_INTERIORRINGN
| ST_INTERSECTION
| ST_INTERSECTS
| ST_ISCLOSED
| ST_ISEMPTY
| ST_ISSIMPLE
| ST_LINEFROMTEXT
| ST_LINEFROMWKB
| ST_LINESTRINGFROMTEXT
| ST_LINESTRINGFROMWKB
| ST_NUMGEOMETRIES
| ST_NUMINTERIORRING
| ST_NUMINTERIORRINGS
| ST_NUMPOINTS
| ST_OVERLAPS
| ST_POINTFROMTEXT
| ST_POINTFROMWKB
| ST_POINTN
| ST_POLYFROMTEXT
| ST_POLYFROMWKB
| ST_POLYGONFROMTEXT
| ST_POLYGONFROMWKB
| ST_SRID
| ST_STARTPOINT
| ST_SYMDIFFERENCE
| ST_TOUCHES
| ST_UNION
| ST_WITHIN
| ST_X
| ST_Y
| SUBDATE
| SUBSTRING_INDEX
| SUBTIME
| SYSTEM_USER
| TAN
| TIME
| TIMEDIFF
| TIMESTAMP
| TIMESTAMPADD
| TIMESTAMPDIFF
| TIME_FORMAT
| TIME_TO_SEC
| TOUCHES
| TO_BASE64
| TO_DAYS
| TO_SECONDS
| UCASE
| UNCOMPRESS
| UNCOMPRESSED_LENGTH
| UNHEX
| UNIX_TIMESTAMP
| UPDATEXML
| UPPER
| UUID
| UUID_SHORT
| VALIDATE_PASSWORD_STRENGTH
| VERSION
| VISIBLE
| WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS
| WEEK
| WEEKDAY
| WEEKOFYEAR
| WEIGHT_STRING
| WITHIN
| YEAR
| YEARWEEK
| Y_FUNCTION
| X_FUNCTION
| JSON_ARRAY
| JSON_OBJECT
| JSON_QUOTE
| JSON_CONTAINS
| JSON_CONTAINS_PATH
| JSON_EXTRACT
| JSON_KEYS
| JSON_OVERLAPS
| JSON_SEARCH
| JSON_VALUE
| JSON_ARRAY_APPEND
| JSON_ARRAY_INSERT
| JSON_INSERT
| JSON_MERGE
| JSON_MERGE_PATCH
| JSON_MERGE_PRESERVE
| JSON_REMOVE
| JSON_REPLACE
| JSON_SET
| JSON_UNQUOTE
| JSON_DEPTH
| JSON_LENGTH
| JSON_TYPE
| JSON_VALID
| JSON_TABLE
| JSON_SCHEMA_VALID
| JSON_SCHEMA_VALIDATION_REPORT
| JSON_PRETTY
| JSON_STORAGE_FREE
| JSON_STORAGE_SIZE
| JSON_ARRAYAGG
| JSON_OBJECTAGG
// MariaDB-specific only
| LASTVAL
| NEXTVAL
| SETVAL
;

View File

@ -0,0 +1,5 @@
--- https://mariadb.com/kb/en/set/
SET GLOBAL v1=1;
SET @@global.v2=2;
SET SESSION v1=1;
SET @@session.v2=2;

View File

@ -0,0 +1,8 @@
#begin
ANALYZE TABLE t1;
ANALYZE TABLE t2, t3;
ANALYZE TABLES t2, t3;
ANALYZE TABLE t1 UPDATE HISTOGRAM ON c1, c2;
ANALYZE TABLE t2 UPDATE HISTOGRAM ON c1 WITH 2 BUCKETS;
ANALYZE TABLE t2 DROP HISTOGRAM ON c1;
#end

View File

@ -0,0 +1,4 @@
SeleCT * frOm someID whErE someexpr > coname orDer bY 1;
upDaTe tbl SeT col=11 wherE col2 > 1;
DeleTE t1.*, t2 from t1 join t3 on t1.col1 = t3.col1 jOin t2 oN t2.col2 = t3.col2 where t3.co4 is NoT nULl;
InsERT iNtO t(coL1, cOl2, CoL3, Col4) ValUes (1, 2, 3, 4), (sQRt(5), aBs(10-poWeR(3,4)), cEIL(rAnD()*100) , (sIn(0.5*3.413234) + coS(100 MoD 33)) +lOG(pI()*eXp(AcOS(10)*AtAn(10))) );

View File

@ -0,0 +1,133 @@
#begin
-- Alter Table
alter table ship_class add column ship_spec varchar(150) first, add somecol int after start_build, algorithm=instant;
alter table t3 add column (c2 decimal(10, 2) comment 'comment`' null, c3 enum('abc', 'cba', 'aaa')), add index t3_i1 using btree (c2) comment 'some index';
alter table t3 add column (c4 decimal(10, 2) comment 'comment`' null), add index t3_i2 using btree (c4) comment 'some index';
alter table t3 add column if not exists (c2 decimal(10, 2), c3 int);
alter table t2 add constraint t2_pk_constraint primary key (1c), alter column `_` set default 1;
alter table t2 drop constraint t2_pk_constraint;
alter table ship_class change column somecol col_for_del tinyint first;
alter table ship_class drop col_for_del;
alter table t3 drop index t3_i1;
alter table t3 drop index if exists t3_i2;
alter table childtable drop index fk_idParent_parentTable;
alter table t2 drop primary key;
alter table t3 rename to table3column;
alter table childtable add constraint `fk1` foreign key (idParent) references parenttable(id) on delete restrict on update cascade;
alter table table3column default character set = cp1251;
alter table `test` change `id` `id` varchar(10) character set utf8mb4 collate utf8mb4_bin not null;
alter table `test` change `id` `id` varchar(10) character set utf8mb4 binary not null;
alter table `test` change `id` `id` varchar(10) character set utf8mb4 binary null default null;
alter table t1 stats_auto_recalc=default stats_sample_pages=50;
alter table t1 stats_auto_recalc=default, stats_sample_pages=50.0;
alter table t1 stats_auto_recalc=default, stats_sample_pages=default;
alter table table1 add primary key (id);
alter table table1 add primary key table_pk (id);
alter table table1 add primary key `table_pk` (id);
alter table table1 add primary key `table_pk` (`id`);
alter table add_test add column if not exists col1 varchar(255);
alter table add_test add column if not exists col4 varchar(255);
alter table add_test add index if not exists ix_add_test_col1 using btree (col1) comment 'test index';
alter table add_test add index if not exists ix_add_test_col4 using btree (col4) comment 'test index';
alter table add_test alter index ix_add_test_col1 invisible;
alter table add_test alter index ix_add_test_col1 visible;
alter table add_test change column if exists col8 col9 tinyint;
alter table add_test change column if exists col3 col5 tinyint;
alter table add_test modify column if exists col9 tinyint;
alter table add_test modify column if exists col5 varchar(255);
alter table add_test drop column if exists col99;
alter table add_test drop column if exists col5;
alter table add_test add column optional bool default 0 null;
alter table add_test add column empty varchar(255);
alter table add_test drop foreign key fk;
alter table add_test drop foreign key if exists fk;
alter table add_test drop constraint if exists cons;
alter table add_test wait 100 add column col1 int not null;
alter table default.task add column xxxx varchar(200) comment 'cdc test';
alter table `some_table` add unique if not exists `id_unique` (`id`)
alter table if exists `add_test` add column if not exists `new_col` text default 'my_default';
alter table user_details add index if not exists `country_id_index` (country_id), algorithm=NOCOPY;
#end
#begin
-- Alter database
alter database test default character set = utf8;
alter database test_1 default encryption = 'Y' read only = 1;
alter schema somedb_name upgrade data directory name;
#end
#begin
-- Alter event
alter definer = current_user event someevent on schedule at current_timestamp + interval 30 minute;
alter definer = 'ivan'@'%' event someevent on completion preserve;
alter definer = 'ivan'@'%' event someevent rename to newsomeevent;
alter event newsomeevent enable comment 'some comment';
-- delimiter //
alter definer = current_user event newsomeevent on schedule at current_timestamp + interval 2 hour
rename to someevent disable
do begin update test.t2 set 1c = 1c + 1; end; -- //
-- delimiter ;
#end
#begin
-- Alter function/procedure
alter function f_name comment 'some funct' language sql sql security invoker;
alter function one_more_func contains sql sql security definer;
alter procedure p_name comment 'some funct' language sql sql security invoker;
alter procedure one_more_proc contains sql sql security definer;
#end
#begin
-- Alter logfile group
-- http://dev.mysql.com/doc/refman/5.6/en/alter-logfile-group.html
ALTER LOGFILE GROUP lg_3 ADD UNDOFILE 'undo_10.dat' INITIAL_SIZE=32M ENGINE=NDBCLUSTER;
ALTER LOGFILE GROUP lg_1 ADD UNDOFILE 'undo_10.dat' wait ENGINE=NDB;
#end
#begin
-- Alter server
-- http://dev.mysql.com/doc/refman/5.6/en/alter-server.html
ALTER SERVER s OPTIONS (USER 'sally');
#end
#begin
-- Alter tablespace
alter tablespace tblsp_1 add datafile 'filename' engine = ndb;
alter tablespace tblsp_2 drop datafile 'deletedfilename' wait engine ndb;
#end
#begin
-- Alter view
alter view my_view1 as select 1 union select 2 limit 0,5;
alter algorithm = merge view my_view2(col1, col2) as select * from t2 with check option;
alter definer = 'ivan'@'%' view my_view3 as select count(*) from t3;
alter definer = current_user sql security invoker view my_view4(c1, 1c, _, c1_2)
as select * from (t1 as tt1, t2 as tt2) inner join t1 on t1.col1 = tt1.col1;
#end
#begin
-- Alter user
alter user 'user'@'%' identified with 'mysql_native_password' as '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19'
require none password expire default account unlock password history default;
alter user 'user'@'%' identified with 'mysql_native_password' as '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19'
require none password expire default account unlock password history 90;
alter user 'user'@'%' identified with 'mysql_native_password' as '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19'
require none password expire default account unlock password reuse interval default;
alter user 'user'@'%' identified with 'mysql_native_password' as '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19'
require none password expire default account unlock password reuse interval 360 DAY;
alter user 'user'@'%' identified with 'mysql_native_password' as '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19'
require none password expire default account unlock password require current;
alter user 'user'@'%' identified with 'mysql_native_password' as '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19'
require none password expire default account unlock password require current optional;
alter user 'user'@'%' identified with 'mysql_native_password' as '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19'
require none password expire default account unlock password require current default;
alter user 'user'@'%' identified with 'mysql_native_password' as '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19'
require none password expire default account unlock failed_login_attempts 5;
alter user 'user'@'%' identified with 'mysql_native_password' as '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19'
require none password expire default account unlock password_lock_time 2;
alter user 'user'@'%' identified with 'mysql_native_password' as '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19'
require none password expire default account unlock password_lock_time unbounded;
alter user 'user'@'%' identified by 'newpassword' retain current password;
alter user if exists 'user'@'%' identified with 'mysql_native_password' as '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19'
require none password expire default account unlock password history default;
rename user user1@100.200.1.1 to user2@100.200.1.2;
rename user user1@100.200.1.1 to user2@2001:0db8:85a3:0000:0000:8a2e:0370:7334;
#end
ALTER TABLE t1 ADD PARTITION (PARTITION p3 VALUES LESS THAN (2002));
ALTER TABLE t1 ADD PARTITION IF NOT EXISTS (PARTITION p3 VALUES LESS THAN (2002));
-- Alter sequence
ALTER SEQUENCE IF EXISTS s2 start=100;
ALTER SEQUENCE s1 CACHE=1000 NOCYCLE RESTART WITH 1;
ALTER TABLE `TABLE_NAME` DROP FOREIGN KEY `TABLE_NAME`.`FK_COLUMN`;

View File

@ -0,0 +1,642 @@
#begin
GET DIAGNOSTICS @p1 = NUMBER, @p2 = ROW_COUNT;
GET DIAGNOSTICS CONDITION 1 @p1 = MYSQL_ERRNO;
GET DIAGNOSTICS CONDITION 1 @p1 = RETURNED_SQLSTATE, @p2 = MESSAGE_TEXT;
GET DIAGNOSTICS CONDITION 1 @p3 = RETURNED_SQLSTATE, @p4 = MESSAGE_TEXT;
GET DIAGNOSTICS CONDITION 1 @p5 = SCHEMA_NAME, @p6 = TABLE_NAME;
GET DIAGNOSTICS CONDITION 1 @errno = MYSQL_ERRNO;
GET DIAGNOSTICS @cno = NUMBER;
GET DIAGNOSTICS CONDITION @cno @errno = MYSQL_ERRNO;
GET CURRENT DIAGNOSTICS CONDITION 1 errno = MYSQL_ERRNO, msg = MESSAGE_TEXT;
GET STACKED DIAGNOSTICS CONDITION 1 errno = MYSQL_ERRNO, msg = MESSAGE_TEXT;
GET CURRENT DIAGNOSTICS errcount = NUMBER;
-- Create User
CREATE USER 'test_crm_debezium'@'%' IDENTIFIED WITH 'mysql_native_password' AS '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' PASSWORD EXPIRE NEVER COMMENT '-';
CREATE USER 'jim'@'localhost' ATTRIBUTE '{"fname": "James", "lname": "Scott", "phone": "123-456-7890"}';
CREATE USER 'jim' @'localhost' IDENTIFIED BY '123';
CREATE USER 'jim' @localhost IDENTIFIED BY '123';
-- Create Table
create table new_t (like t1);
create table log_table(row varchar(512));
create table log_table(row character(512));
create table ships(name varchar(255), class_id int, id int);
create table ships_guns(guns_id int, ship_id int);
create table guns(id int, power decimal(7,2), callibr decimal(10,3));
create table ship_class(id int, class_name varchar(100), tonange decimal(10,2), max_length decimal(10,2), start_build year, end_build year(4), max_guns_size int);
create table `some table $$`(id int auto_increment key, class varchar(10), data binary) engine=MYISAM;
create table `parent_table`(id int primary key, column1 varchar(30), index parent_table_i1(column1(20)), check(char_length(column1)>10)) engine InnoDB;
create table child_table(id int unsigned auto_increment primary key, id_parent int references parent_table(id) match full on update cascade on delete set null) engine=InnoDB;
create table `another some table $$` like `some table $$`;
create table `actor` (`last_update` timestamp default CURRENT_TIMESTAMP, `birthday` datetime default CURRENT_TIMESTAMP ON UPDATE LOCALTIMESTAMP);
create table boolean_table(c1 bool, c2 boolean default true);
create table table_with_character_set_eq (id int, data varchar(50)) character set = default;
create table table_with_character_set (id int, data varchar(50)) character set default;
create table table_with_visible_index (id int, data varchar(50), UNIQUE INDEX `data_UNIQUE` (`data` ASC) VISIBLE);
create table table_with_index (id int, data varchar(50), UNIQUE INDEX `data_UNIQUE` (`data` ASC));
create table transactional_table(name varchar(255), class_id int, id int) transactional=1;
create table transactional(name varchar(255), class_id int, id int);
create table add_test(col1 varchar(255), col2 int, col3 int);
create table blob_test(id int, col1 blob(45));
CREATE TABLE `user_account` ( `id1` bigint(20) unsigned NOT NULL DEFAULT nextval(`useraccount`.`user_account_id_seq`));
create table žluťoučký (kůň int);
CREATE TABLE staff (PRIMARY KEY (staff_num), staff_num INT(5) NOT NULL, first_name VARCHAR(100) NOT NULL, pens_in_drawer INT(2) NOT NULL, CONSTRAINT pens_in_drawer_range CHECK(pens_in_drawer BETWEEN 1 AND 99));
create table column_names_as_aggr_funcs(min varchar(100), max varchar(100), sum varchar(100), count varchar(100));
CREATE TABLE char_table (c1 CHAR VARYING(10), c2 CHARACTER VARYING(10), c3 NCHAR VARYING(10));
CREATE TABLE generated_persistent(id int NOT NULL AUTO_INCREMENT, ip_hash char(64) AS (SHA2(CONCAT(`token`, COALESCE(`ip`, "")), 256)) PERSISTENT, persistent int, PRIMARY KEY (`id`), UNIQUE KEY `token_and_ip_hash` (`ip_hash`)) ENGINE=InnoDB;
create table rack_shelf_bin ( id int unsigned not null auto_increment unique primary key, bin_volume decimal(20, 4) default (bin_len * bin_width * bin_height));
CREATE TABLE `tblSRCHjob_desc` (`description_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `description` mediumtext NOT NULL, PRIMARY KEY (`description_id`)) ENGINE=TokuDB AUTO_INCREMENT=4095997820 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=TOKUDB_QUICKLZ;
create table invisible_column_test(id int, col1 int INVISIBLE);
create table visible_column_test(id int, col1 int VISIBLE);
create table table_with_buckets(id int(11) auto_increment NOT NULL COMMENT 'ID', buckets int(11) NOT NULL COMMENT '分桶数');
create table statement(id int);
CREATE TABLE table_items (id INT, purchased DATE)
PARTITION BY RANGE( YEAR(purchased) )
SUBPARTITION BY HASH( TO_DAYS(purchased) )
SUBPARTITIONS 2 (
PARTITION p0 VALUES LESS THAN (1990),
PARTITION p1 VALUES LESS THAN (2000),
PARTITION p2 VALUES LESS THAN MAXVALUE
);
CREATE TABLE table_items_with_subpartitions (id INT, purchased DATE)
PARTITION BY RANGE( YEAR(purchased) )
SUBPARTITION BY HASH( TO_DAYS(purchased) ) (
PARTITION p0 VALUES LESS THAN (1990) (
SUBPARTITION s0,
SUBPARTITION s1
),
PARTITION p1 VALUES LESS THAN (2000) (
SUBPARTITION s2,
SUBPARTITION s3
),
PARTITION p2 VALUES LESS THAN MAXVALUE (
SUBPARTITION s4,
SUBPARTITION s5
)
);
CREATE TABLE positions_rollover (
id bigint(20) NOT NULL AUTO_INCREMENT,
time datetime NOT NULL,
partition_index int(10) unsigned NOT NULL DEFAULT 0,
PRIMARY KEY (id,partition_index),
KEY time (time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
PARTITION BY LIST (partition_index) (
PARTITION positions_rollover_partition VALUES IN (0) ENGINE = InnoDB,
PARTITION default_positions_rollover_partition DEFAULT ENGINE = InnoDB
);
CREATE TABLE `tab_with_json_value` (
`col0` JSON NOT NULL,
`col1` VARCHAR(36) COLLATE utf8mb4_bin GENERATED ALWAYS AS (
JSON_VALUE(`col0`, _utf8mb4'$._field1' RETURNING CHAR(36) CHARACTER SET latin1)
) STORED NOT NULL,
`col2` VARCHAR(36) COLLATE utf8mb4_bin GENERATED ALWAYS AS (
JSON_VALUE(`col0`, _utf8mb4'$._field1' ERROR ON EMPTY)
) STORED NOT NULL,
`col3` VARCHAR(36) COLLATE utf8mb4_bin GENERATED ALWAYS AS (
JSON_VALUE(`col0`, _utf8mb4'$._field1' DEFAULT 'xx' ON ERROR)
) STORED NOT NULL,
`col4` JSON NOT NULL,
PRIMARY KEY (`col1`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = COMPRESSED;
CREATE TABLE CustomerTable (
CustomerID varchar(5),
CompanyName varchar(40),
ContactName varchar(30),
Address varchar(60),
Phone varchar(24)
) ENGINE = CONNECT TABLE_TYPE = ODBC;
CREATE TABLE CustomerTable (
table_type varchar(5)
);
CREATE TABLE `daily_intelligences`(
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '',
`partner_code` varchar(32) DEFAULT NULL COMMENT '',
`text` LONGTEXT DEFAULT NULL COMMENT '',
`monitor_time` TIMESTAMP DEFAULT NULL COMMENT '',
`gmt_modify` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '',
`gmt_create` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '',
PRIMARY KEY (`id`)
) ENGINE=innodb DEFAULT CHAR SET=utf8 COMMENT '';
CREATE TABLE `t_test_curdate` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`c1` datetime NOT NULL DEFAULT CAST(CURRENT_TIMESTAMP() as DATE) COMMENT 'error test',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `t_test_curdate` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`c1` datetime NOT NULL DEFAULT CURDATE() COMMENT 'error test',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE OR REPLACE TABLE `t_table` (
`info_no` int(11) unsigned NOT NULL AUTO_INCREMENT,
`product_no` int(11) unsigned NOT NULL,
`member_id` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL,
`app_url` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`redirect_url` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`scope` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`info_no`),
UNIQUE KEY `UN_member_id` (`member_id`) USING BTREE,
UNIQUE KEY `UN_product_no` (`product_no`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE `table_default_fn`(`quote_id` varchar(32) NOT NULL,`created_at` bigint(20) NOT NULL DEFAULT unix_timestamp());
CREATE TABLE IF NOT EXISTS `contract_center`.`ent_folder_letter_relationship` (
`id` BIGINT(19) UNSIGNED NOT NULL COMMENT '唯一标识',
`layer` TINYINT(4) UNSIGNED DEFAULT _UTF8MB4'0' COMMENT '文档所属层级0-主关联文档, 1-次关联文档',
`deleted` TINYINT(1) NOT NULL DEFAULT _UTF8MB4'0' COMMENT '0-有效记录, 1-删除',
`data_create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP() COMMENT '创建时间',
`data_update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP() ON UPDATE CURRENT_TIMESTAMP() COMMENT '更新时间',
PRIMARY KEY(`id`)) ENGINE = InnoDB DEFAULT CHARACTER SET = UTF8MB4;
CREATE TABLE `auth_realm_clients` (
`pk_realm` int unsigned NOT NULL DEFAULT '0',
`fk_realm` int unsigned DEFAULT NULL,
`client_id` varchar(150) NOT NULL,
`client_secret` blob NOT NULL,
PRIMARY KEY (`pk_realm`),
KEY `auth_realms_auth_realm_clients` (`fk_realm`)
) START TRANSACTION ENGINE=InnoDB DEFAULT CHARSET=latin1;
create table `site_checker_b_sonet_group_favorites` (
USER_ID int(11) not null,
GROUP_ID int(11) not null,
DATE_ADD datetime DEFAULT NULL,
primary key (USER_ID, GROUP_ID)
);
CREATE TABLE `test_table\\`(id INT(11) NOT NULL, PRIMARY KEY (`id`)) ENGINE = INNODB;
CREATE TABLE `\\test_table`(id INT(11) NOT NULL, PRIMARY KEY (`id`)) ENGINE = INNODB;
CREATE TABLE `\\test\\_table\\`(id INT(11) NOT NULL, PRIMARY KEY (`id`)) ENGINE = INNODB;
#end
#begin
-- Rename table
-- http://dev.mysql.com/doc/refman/5.6/en/rename-table.html
RENAME TABLE old_table TO tmp_table, new_table TO old_table, tmp_table TO new_table;
RENAME TABLE table_b TO table_a;
RENAME TABLE current_db.tbl_name TO other_db.tbl_name;
rename table debezium_all_types_old to debezium_all_types, test_json_object_old wait 10 to test_json_object;
#end
#begin
-- Truncate table
truncate table t1;
truncate parent_table;
truncate `#`;
truncate `#!^%$`;
truncate table tbl_without_pk nowait;
#end
#begin
-- Create database
create database somedb;
create schema if not exists myschema;
create schema `select` default character set = utf8;
create database if not exists `current_date` character set cp1251;
create database super default character set utf8 collate = utf8_bin character set utf8 collate utf8_bin;
create database db_with_character_set_eq character set = DEFAULT;
create database db_with_character_set character set default;
#end
#begin
-- Create event 1
-- delimiter //
create definer = current_user event if not exists someevent on schedule at current_timestamp + interval 30 minute
on completion preserve do begin insert into test.t1 values (33), (111);select * from test.t1; end; -- //
#end
#begin
-- Create event 2
create definer = 'ivan'@'%' event testevent1 on schedule every 1 hour ends '2016-11-05 23:59:00'
do begin select * from test.t2; end; -- //
#end
#begin
-- Create event 3
create definer = current_user() event testevent2 on schedule at '2016-11-03 23:59:00'
do begin update test.t2 set 1c = 1c + 1; end; -- //
-- delimiter ;
#end
#begin
-- Create index
create index index1 on t1(col1) comment 'test index' comment 'some test' using btree;
create unique index index2 using btree on t2(1c desc, `_` asc);
create index index3 using hash on antlr_tokens(token(30) asc);
create index index4 on t1(col1) nowait comment 'test index' using btree;
create index ix_add_test_col1 on add_test(col1) comment 'test index' using btree;
#end
#begin
create index myindex on t1(col1) comment 'test index' comment 'some test' using btree;
create or replace index myindex on t1(col1) comment 'test index' comment 'some test' using btree;
#end
#begin
-- Create logfile group
-- http://dev.mysql.com/doc/refman/5.6/en/create-logfile-group.html
CREATE LOGFILE GROUP lg1 ADD UNDOFILE 'undo.dat' INITIAL_SIZE = 10M ENGINE = InnoDB;
-- CREATE LOGFILE GROUP lg1 ADD UNDOFILE 'undo.dat' INITIAL_SIZE = 10M;
CREATE LOGFILE GROUP lg1 ADD UNDOFILE 'undo.dat' INITIAL_SIZE = 10000000 ENGINE = NDB;
#end
#begin
-- Create server
-- http://dev.mysql.com/doc/refman/5.6/en/create-server.html
CREATE SERVER s
FOREIGN DATA WRAPPER mysql
OPTIONS (USER 'Remote', HOST '192.168.1.106', DATABASE 'test');
#end
#begin
-- Create tablespace
create tablespace tblsp1 add datafile 'tblsp_work1' use logfile group lg_1 initial_size = 4G engine MYISAM;
create tablespace tblsp2 add datafile 'tblsp_proj1' use logfile group lg_6 autoextend_size = 4294 max_size = 2294967296 engine NDB;
#end
#begin
-- Create trigger 1
-- delimiter //
create trigger trg_my1 before delete on test.t1 for each row begin insert into log_table values ("delete row from test.t1"); insert into t4 values (old.col1, old.col1 + 5, old.col1 + 7); end; -- //-- delimiter ;
#end
#begin
-- Create trigger 2
create definer = current_user() trigger trg_my2 after insert on test.t2 for each row insert into log_table values (concat("inserted into table test.t2 values: (1c, _) = (", cast(NEW.col1 as char(100)), ", ", convert(new.`_`, char(100)), ")"));
#end
#begin
-- Create trigger 3
-- delimiter //
CREATE TRIGGER mask_private_data BEFORE INSERT ON users FOR EACH ROW BEGIN SET NEW.phone = CONCAT('555', NEW.id); END; -- //-- delimiter ;
#end
#begin
-- Create trigger 4
-- CAST to JSON
CREATE DEFINER=`ctlplane`@`%` TRIGGER `write_key_add` AFTER INSERT ON `sources` FOR EACH ROW
BEGIN
DECLARE i, n INT DEFAULT 0;
SET n = JSON_LENGTH(CAST(CONVERT(NEW.write_keys USING utf8mb4) AS JSON));
SET campaign_id = NEW.write_keys->>'$.campaign_id';
WHILE i < n DO
INSERT INTO source_id_write_key_mapping (source_id, write_key)
VALUES (NEW.id, JSON_UNQUOTE(JSON_EXTRACT(CAST(CONVERT(NEW.write_keys USING utf8mb4) AS JSON), CONCAT('$[', i, ']'))))
ON DUPLICATE KEY UPDATE
source_id = NEW.ID,
write_key = JSON_UNQUOTE(JSON_EXTRACT(CAST(CONVERT(NEW.write_keys USING utf8mb4) AS JSON), CONCAT('$[', i, ']')));
SET i = i + 1;
END WHILE;
END
#end
#begin
-- Create trigger 5
CREATE TRIGGER `rtl_trigger_before_update`
BEFORE UPDATE
ON all_student_educator FOR EACH ROW
BEGIN
IF NEW.student_words_read_total is not null AND NEW.student_words_read_total >= 3 AND NEW.badge_3_words_read_flag = 0 THEN
SET
NEW.badge_flag = 1,
NEW.badge_student_total = NEW.badge_student_total + 1,
NEW.badge_datetime = now();
INSERT IGNORE INTO user_platform_badge (platform_badge_id, user_id) VALUES (3, NEW.student_id);
END IF;
END
#end
#begin
-- Create trigger 6
-- delimiter //
create or replace trigger trg_my1 before delete on test.t1 for each row begin insert into log_table values ("delete row from test.t1"); insert into t4 values (old.col1, old.col1 + 5, old.col1 + 7); end; -- //-- delimiter ;
#end
#begin
-- Create view
create or replace view my_view1 as select 1 union select 2 limit 0,5;
create algorithm = merge view my_view2(col1, col2) as select * from t2 with check option;
create or replace definer = 'ivan'@'%' view my_view3 as select count(*) from t3;
create or replace definer = current_user sql security invoker view my_view4(c1, 1c, _, c1_2)
as select * from (t1 as tt1, t2 as tt2) inner join t1 on t1.col1 = tt1.col1;
create view v_some_table as (with a as (select * from some_table) select * from a);
#end
#begin
-- Create function
-- delimiter //
CREATE OR REPLACE FUNCTION `func1`() RETURNS varchar(5) CHARSET utf8 COLLATE utf8_unicode_ci
BEGIN
RETURN '12345';
END; -- //-- delimiter ;
#end
#begin
-- Create function
CREATE FUNCTION `uuidToBinary`(_uuid BINARY(36)) RETURNS binary(16)
DETERMINISTIC
SQL SECURITY INVOKER
RETURN
UNHEX(CONCAT(
SUBSTR(_uuid, 15, 4),
SUBSTR(_uuid, 10, 4),
SUBSTR(_uuid, 1, 8),
SUBSTR(_uuid, 20, 4),
SUBSTR(_uuid, 25) ))
#end
#begin
-- Use UTC_TIMESTAMP without parenthesis
CREATE FUNCTION IF NOT EXISTS myfunc(a INT) RETURNS INT
BEGIN
DECLARE result INT;
SET result = UTC_TIMESTAMP;
RETURN result;
END;
#end
#begin
-- From MariaDB 10.4.3, the JSON_VALID function is automatically used as a CHECK constraint for the JSON data type alias in order to ensure that a valid json document is inserted.
-- src: https://mariadb.com/kb/en/json_valid/
CREATE TABLE `global_priv` (
`Host` CHAR(60) COLLATE utf8_bin NOT NULL DEFAULT '',
`User` CHAR(80) COLLATE utf8_bin NOT NULL DEFAULT '',
`Privilege` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '{}' CHECK (json_valid(`Privilege`)),
PRIMARY KEY (`Host`,`User`)
) ENGINE=Aria DEFAULT CHARSET=utf8 COLLATE=utf8_bin PAGE_CHECKSUM=1 TRANSACTIONAL=1 COMMENT='Users and global privileges';
#end
#begin
-- https://dev.mysql.com/doc/refman/8.0/en/json-validation-functions.html#json-validation-functions-constraints
CREATE TABLE geo (
coordinate JSON,
CHECK(
JSON_SCHEMA_VALID(
'{
"type":"object",
"properties":{
"latitude":{"type":"number", "minimum":-90, "maximum":90},
"longitude":{"type":"number", "minimum":-180, "maximum":180}
},
"required": ["latitude", "longitude"]
}',
coordinate
)
)
);
#end
#begin
CREATE TABLE `tab1` (
f4 FLOAT4,
f8 FLOAT8,
i1 INT1,
i2 INT2,
i3 INT3,
i4 INT4,
i8 INT8,
lvb LONG VARBINARY,
lvc LONG VARCHAR,
lvcfull LONG BINARY CHARSET utf8 COLLATE utf8_bin,
l LONG,
mi MIDDLEINT
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
#end
-- Comments
-- SELECT V_PAYABLE_AMT, DIS_ADJUST_TOTAL_PAYABLE;
-- SELECT V_PAYABLE_AMT, DIS_ADJUST_TOTAL_PAYABLE;
#begin
-- Create procedure
-- The default value for local variables in a DECLARE statement should be an expression
-- src: https://dev.mysql.com/doc/refman/5.7/en/declare-local-variable.html
-- delimiter //
CREATE PROCEDURE procedure1()
BEGIN
DECLARE var1 INT unsigned default 1;
DECLARE var2 TIMESTAMP default CURRENT_TIMESTAMP;
DECLARE var3 INT unsigned default 2 + var1;
END -- //-- delimiter ;
#end
#begin
-- Create procedure
-- delimiter //
CREATE PROCEDURE doiterate(p1 INT)
label2:BEGIN
label1:LOOP
SET p1 = p1 + 1;
IF p1 < 10 THEN ITERATE label1; END IF;
LEAVE label1;
END LOOP label1;
END -- //-- delimiter ;
#end
-- Create procedure
-- delimiter //
CREATE PROCEDURE makesignal(p1 INT)
BEGIN
DECLARE error_text VARCHAR(255);
IF (error_text != 'OK') THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = error_text;
END IF;
END -- //-- delimiter ;
#end
#begin
CREATE DEFINER=`bettingservice`@`stage-us-nj-app%` PROCEDURE `AggregatePlayerFactDaily`()
BEGIN
DECLARE CID_min BIGINT;
DECLARE CID_max BIGINT;
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
SHOW ERRORS;
ROLLBACK;
END;
SELECT LastID+1 INTO CID_min FROM AggregateStatus
WHERE TableName = 'Combination_Transaction_Player_Fact';
SELECT Id INTO CID_max FROM Combination_Transaction ORDER BY Id DESC LIMIT 1;
START TRANSACTION;
UPDATE AggregateStatus SET LastId = CID_max, LastUpdated = CURRENT_TIMESTAMP
WHERE TableName = 'Combination_Transaction_Player_Fact';
INSERT INTO Combination_Transaction_Player_Fact
SELECT
NULL `Id`,
CT.Player_UID,
CT.Tx_Type `Type`,
DATE(BT.Timestamp) `Date`,
SUM(CT.Real_Amount) `Real_Amount`,
SUM(CT.Bonus_Amount) `Bonus_Amount`,
BT.Currency_UID,
COUNT(CT.Id) Tx_Count,
SUM(IF(CT.Real_Amount>0,1,0)) `Real_Count`,
SUM(IF(CT.Bonus_Amount>0,1,0)) `Bonus_Count`
FROM Combination_Transaction CT
LEFT JOIN Betting_Transaction BT ON CT.Betting_Tx_ID = BT.ID
WHERE CT.Id BETWEEN CID_min
AND CID_max
GROUP BY CT.Player_UID, CT.Tx_Type, DATE(BT.Timestamp)
ON DUPLICATE KEY UPDATE
Currency_UID = VALUES(Currency_UID),
Tx_Count = Tx_Count + VALUES(Tx_Count),
Real_Amount = Real_Amount + VALUES(Real_Amount),
Bonus_Amount = Bonus_Amount + VALUES(Bonus_Amount),
Real_Count = Real_Count + VALUES(Real_Count),
Bonus_Count = Bonus_Count + VALUES(Bonus_Count);
COMMIT;
END
#end
#begin
-- delimiter //
CREATE PROCEDURE set_unique_check()
BEGIN
SET unique_checks=off;
SET unique_checks=on;
END; -- //-- delimiter ;
#end
#begin
CREATE DEFINER=`prod_migrations`@`%` PROCEDURE `upsert_virtual_item`(IN name VARCHAR(45), IN type TINYINT UNSIGNED)
BEGIN
SET @merchantId := (SELECT merchant_id FROM merchant LIMIT 1);
IF @merchantId > 0 THEN
SET @rows := (SELECT COUNT(*) FROM item WHERE item_type = type);
IF @rows > 0 THEN
UPDATE item SET
merchant_id = @merchantId,
cz_title = name,
price = 0,
orderer = 2,
takeaway = 0,
currency_id = (
SELECT currency_currency_id
FROM merchant
WHERE merchant_id = @merchantId
),
tax_vat_id = (
SELECT tax_vat.tax_vat_id
FROM tax_vat
JOIN merchant
ON merchant.place_country_id = tax_vat.country_id
AND merchant.merchant_id = @merchantId
WHERE tax_vat.default = 1
),
item_measure_id = 1,
kitchen_print = 0,
deleted = 0,
virtual = 1
WHERE item_type = type;
ELSE
INSERT INTO item SET
merchant_id = @merchantId,
cz_title = name,
price = 0,
orderer = 2,
takeaway = 0,
currency_id = (
SELECT currency_currency_id
FROM merchant
WHERE merchant_id = @merchantId
),
tax_vat_id = (
SELECT tax_vat.tax_vat_id
FROM tax_vat
JOIN merchant
ON merchant.place_country_id = tax_vat.country_id
AND merchant.merchant_id = @merchantId
WHERE tax_vat.default = 1
),
item_measure_id = 1,
kitchen_print = 0,
deleted = 0,
virtual = 1,
item_type = type
;
END IF;
END IF;
END
#end
#begin
-- Create Role
create role 'RL_COMPLIANCE_NSA';
create role if not exists 'RL_COMPLIANCE_NSA';
CREATE ROLE 'admin', 'developer';
CREATE ROLE 'webapp'@'localhost';
#end
#begin
CREATE VIEW view_with_cte1 AS
WITH cte1 AS
(
SELECT column_1 AS a, column_2 AS b
FROM table1
)
SELECT a, b FROM cte1;
#end
#begin
CREATE VIEW view_with_cte2 AS
WITH cte1 (col1, col2) AS
(
SELECT 1, 2
UNION ALL
SELECT 3, 4
),
cte2 (col1, col2) AS
(
SELECT 5, 6
UNION ALL
SELECT 7, 8
)
SELECT col1, col2 FROM cte;
#end
#begin
CREATE VIEW view_with_cte3 AS
WITH cte (col1, col2) AS
(
SELECT 1, 2
UNION ALL
SELECT 3, 4
)
SELECT col1, col2 FROM cte;
#end
#begin
CREATE VIEW view_with_cte4 AS
WITH RECURSIVE cte (n) AS
(
SELECT 1
UNION ALL
SELECT n + 1 FROM cte WHERE n < 5
)
SELECT * FROM cte;
#end
#begin
CREATE VIEW `invoice_payments_stats` AS
SELECT
`i`.`id` AS `id`
FROM (`invoices` `i` JOIN lateral (SELECT MAX(`ip`.`date`) AS `latest_payment` FROM `invoice_payments` `ip`) `ps`);
#end
#begin
lock tables t1 read nowait;
lock table t1 read local wait 100;
#end
-- Create sequence
#begin
CREATE SEQUENCE if NOT EXISTS workdb.s2 START=1 CYCLE MINVALUE=10000 MAXVALUE=999999999999;
CREATE OR REPLACE SEQUENCE if NOT EXISTS s2 START=100 CACHE 1000;
CREATE SEQUENCE `seq_8b4d1cdf-377e-4021-aef3-f7c9846903fc` INCREMENT BY 1 START WITH 1;
#end
#begin
-- From MariaDB 10.1.2, pre-query variables are supported
-- src: https://mariadb.com/kb/en/set-statement/
SET STATEMENT max_statement_time=60 FOR CREATE TABLE some_table (val int);
#end
#begin
CREATE OR REPLACE VIEW view_name AS
WITH my_values(val1, val2) AS (
VALUES (1, 'One'),
(2, 'Two')
)
SELECT v.val1, v.val2 FROM my_values v;
#end
#begin
CREATE DEFINER=`peuser`@`%` PROCEDURE `test_utf`()
BEGIN
SET @Ν_greece := 1, @N_latin := 'test';
SELECT
@Ν_greece
,@N_latin;
END
#end

View File

@ -0,0 +1,81 @@
#begin
-- Drop table
drop temporary table if exists temp_t1;
drop temporary table `some_temp_table`;
-- drop table if exists `one_more 1343 *&&^ table`;
drop table antlr_all_tokens, antlr_function_tokens, antlr_keyword_tokens, antlr_tokens, childtable, guns, log_table, new_t, parenttable, ship_class, ships, ships_guns, t1, t2, t3, t4, tab1;
drop table if exists order;
drop table if exists group;
drop table if exists condition;
drop index index1 on t1 nowait;
drop table tbl_name wait 100;
#end
#begin
-- Drop database
drop database somedb;
drop schema if exists myschema;
drop database if exists `select`;
drop schema `current_date`;
drop schema if exists `super`;
#end
#begin
-- Drop event
drop event if exists testevent1;
drop event if exists testevent2;
drop event someevent;
#end
#begin
-- Drop index
drop index index1 on t1 algorithm=default;
drop index index2 on t2 algorithm=default lock none;
drop index index3 on antlr_tokens algorithm default lock=none;
drop index if exists index1 on t1 algorithm=default;
#end
#begin
-- Drop logfile group
-- http://dev.mysql.com/doc/refman/5.6/en/create-logfile-group.html
DROP LOGFILE GROUP lg1 ENGINE = NDB;
#end
#begin
-- Drop server
drop server if exists s;
drop server some_server_name_enough_character_length;
#end
#begin
-- Drop tablespace
drop tablespace tblsp1 engine = NDB;
drop tablespace tblsp2 engine = InnoDB;
#end
#begin
-- Drop trigger
drop trigger if exists test.trg_my1;
drop trigger trg_my2;
#end
#begin
-- Drop view
drop view if exists my_view1, my_view2, my_view3, my_view4;
drop view some_view restrict;
drop view if exists `view`, one_more_view, 1view cascade;
#end
#begin
-- Drop procedure
drop procedure if exists some_proc;
drop procedure some_proc;
#end
#begin
-- Drop function
drop function if exists foo;
drop function bar;
#end
#begin
-- Drop Role
DROP ROLE 'admin', 'developer';
DROP ROLE 'webapp'@'localhost';
#end
-- Drop sequence
#begin
DROP SEQUENCE IF EXISTS /* test comment */ s1, s2;
DROP SEQUENCE s3;
#end

View File

@ -0,0 +1,21 @@
-- With our without binlog
flush no_write_to_binlog hosts;
flush local hosts;
flush hosts, status;
-- Table flushing
flush tables;
flush local tables Foo;
flush tables Foo, Bar;
flush tables Foo, Bar for export;
flush tables Foo, Bar with read lock;
-- 'FLUSH TABLE' is an alias for 'FLUSH TABLES' (https://dev.mysql.com/doc/refman/8.0/en/flush.html)
flush table;
flush local table Foo;
flush TABLE Foo, Bar;
flush table Foo, Bar for export;
flush table Foo, Bar with read lock;

View File

@ -0,0 +1,17 @@
#begin
-- delete one-table syntax
delete from t1 where col1 = true and (col2 - col3 <= (select count(*) from t2) or maincol/2 > 100.2);
delete low_priority from mytable where value_col > 0 order by sort_col desc limit 10;
delete quick ignore from test.parenttable where id*2 + somecol < 10;
#end
#begin
-- delete multiple-table syntax
delete ignore t1.*, alias_t2 from t1 inner join t3 on t1.col1 = t3.somecol and t1.col2 > t3.col_for_compare left join t2 as alias_t2 on t1.col1 <= alias_t2.col1 and alias_t2.col_onecol + t3.col_for_compare <> t1.sum_col
where alias_t2.not_null_col is not null and t1.primary_key_column >= 100;
-- http://dev.mysql.com/doc/refman/5.6/en/delete.html
DELETE FROM t1, t2 USING t1 INNER JOIN t2 INNER JOIN t3 WHERE t1.id=t2.id AND t2.id=t3.id;
DELETE t1, t2 FROM t1 INNER JOIN t2 INNER JOIN t3 WHERE t1.id=t2.id AND t2.id=t3.id;
DELETE t1 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL;
DELETE a1, a2 FROM t1 AS a1 INNER JOIN t2 AS a2 WHERE a1.id=a2.id;
DELETE FROM a1, a2 USING t1 AS a1 INNER JOIN t2 AS a2 WHERE a1.id=a2.id;
#end

View File

@ -0,0 +1,46 @@
#begin
-- insert on select
insert into t1 select * from t2;
insert into some_ship_info
select ship_power.gun_power, ship_info.*
FROM
(
select s.name as ship_name, sum(g.power) as gun_power, max(callibr) as max_callibr
from
ships s inner join ships_guns sg on s.id = sg.ship_id inner join guns g on g.id = sg.guns_id
group by s.name
) ship_power
inner join
(
select s.name as ship_name, sc.class_name, sc.tonange, sc.max_length, sc.start_build, sc.max_guns_size
from
ships s inner join ship_class sc on s.class_id = sc.id
) ship_info using (ship_name);
INSERT INTO l4stal13prema00.`fusion` ( `partition en` , `classe` , `segment` , `F tot` , `F loc` , `indice specif` )
SELECT * FROM f3p1 WHERE 1;
#end
#begin
-- insert base syntax
insert ignore into t1(col1, col2, col3) values ('abc', 0, .12), ('adfasdf',23432, -.12);
-- http://dev.mysql.com/doc/refman/5.6/en/insert.html
INSERT INTO tbl_name (col1,col2) VALUES(col2*2, 15);
INSERT INTO tbl_name (col1,col2) VALUES(15,col1*2);
INSERT INTO logs (`site_id`, `time`,`hits`) VALUES (1,"2004-08-09", 15) ON DUPLICATE KEY UPDATE hits=hits+15;
INSERT INTO t2 (b, c)
VALUES ((SELECT a FROM t1 WHERE b='Chip'), 'shoulder'),
((SELECT a FROM t1 WHERE b='Chip'), 'old block'),
((SELECT a FROM t1 WHERE b='John'), 'toilet'),
((SELECT a FROM t1 WHERE b='John'), 'long,silver'),
((SELECT a FROM t1 WHERE b='John'), 'li''l');
INSERT INTO tbl_test (FirstName)
SELECT 'Aleem' UNION ALL SELECT 'Latif' UNION ALL SELECT 'Mughal';
#end
#begin
-- not latin1 literals
insert into t values ('кириллица', 2, 3);
insert INTO `wptests_posts` (`post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_content_filtered`, `post_title`, `post_excerpt`, `post_status`, `post_type`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_parent`, `menu_order`, `post_mime_type`, `guid`) VALUES (7, '2016-09-06 16:49:51', '2016-09-06 16:49:51', '', '', 'صورة', '', 'inherit', 'attachment', 'open', 'closed', '', '%d8%b5%d9%88%d8%b1%d8%a9', '', '', '2016-09-06 16:49:51', '2016-09-06 16:49:51', 0, 0, 'image/jpeg', '');
#end
insert into sql_log values(retGUID,log_type,log_text,0,0,current_user,now());
insert into sql_log values(retGUID,log_type,log_text,0,0,current_user(),now());

View File

@ -0,0 +1,13 @@
#begin
replace into t1 values (default, 1, '2', abs(-10 * col1) + sqrt(col2/col3));
replace table1(col1, col2, col3) value (1, 2, 3), (4, 5, 6), (7, 8, 9);
replace into t2(str1, str2) values (null, 'abc'), ('some' ' string' ' to replace', @someval);
replace into new_t select * from old_t;
#end
#begin
-- http://dev.mysql.com/doc/refman/5.6/en/replace.html
REPLACE INTO test VALUES (1, 'Old', '2014-08-20 18:47:00');
REPLACE INTO test VALUES (1, 'New', '2014-08-20 18:47:42');
REPLACE INTO T SELECT * FROM T;
REPLACE LOW_PRIORITY INTO `online_users` SET `session_id`='3580cc4e61117c0785372c426eddd11c', `user_id` = 'XXX', `page` = '/', `lastview` = NOW();
#end

View File

@ -0,0 +1,256 @@
#begin
-- common conustructions tests
-- -- Literals
-- -- -- String literal
SELECT 'hello world';
select N'testing conflict on N - spec symbol and N - as identifier' as n;
select n'abc' as tstConstrN;
select N'abc' "bcd" 'asdfasdf' as tstConstNAndConcat;
select 'afdf' "erwhg" "ads" 'dgs' "rter" as tstDiffQuoteConcat;
select 'some string' COLLATE latin1_danish_ci as tstCollate;
select _latin1'some string' COLLATE latin1_danish_ci as tstCollate;
select '\'' as c1, '\"' as c2, '\b' as c3, '\n' as c4, '\r' as c5, '\t' as c6, '\Z' as c7, '\\' as c8, '\%' as c9, '\_' as c10;
select * from t1 for update skip locked;
select * from t1 lock in share mode nowait;
#end
#begin
-- -- -- String literal spec symbols
-- bug: two symbols ' afer each other: ''
select '\'Quoted string\'' col1, 'backslash \\ ' ', two double quote "" ' ', two single quote ''' as col2;
select '\'Quoted string\' ' col1, 'backslash \\ ' ', two double quote "" ' ', two single quote ''' as col2;
select * from `select` where `varchar` = 'abc \' ' and `varchar2` = '\'bca';
#end
#begin
-- -- -- Number literal
SELECT 1;
select 1.e-3 as 123e;
select del1.e123 as c from del1;
select -1, 3e-2, 2.34E0;
SELECT -4.1234e-2, 0.2e-3 as c;
SELECT .1e10;
SELECT -.1e10;
select 15e3, .2e5 as col1;
select .2e3 c1, .2e-4 as c5;
#end
#begin
-- -- -- Number float collision test
select t1e2 as e1 from t;
select 1e2t as col from t;
#end
#begin
-- -- -- Hexadecimal literal
select X'4D7953514C';
select x'4D7953514C';
select 0x636174;
select 0x636174 c1;
select x'4D7953514C' c1, 0x636174 c2;
select x'79' as `select`, 0x2930 cc, 0x313233 as c2;
#end
#begin
-- -- -- Null literal
SELECT null;
SELECT not null;
select \N;
select ((\N));
select not ((\N));
#end
#begin
-- -- -- mixed literals
select \N as c1, null as c2, N'string';
select 4e15 colum, 'hello, ' 'world', X'53514C';
select 'abc' ' bcd' ' \' \' ' as col, \N c2, -.1e-3;
#end
#begin
-- -- Variables
SELECT @myvar;
#end
#begin
-- select_column tests
select * from `select`;
select *, `select`.*, `select`.* from `select`;
select *, 'abc' from `select`;
select *, 1, \N, N'string' 'string2' from `select`;
#end
#begin
-- UNION tests
select 1 union select 2 limit 0,5;
select * from (select 1 union select 2 union select 0) as t order by 1 limit 0,10;
select col1 from t1 union select * from (select 1 as col2) as newt;
select col1 from t1 union (select * from (select 1 as col2) as newt);
select 1 as c1 union (((select 2)));
#end
#begin
-- -- -- subquery in UNION
select 1 union select * from (select 2 union select 3) as table1;
select 1 union (select * from (select 2 union select 3) as table1);
#end
#begin
-- subquery FROM
select * from (((((((select col1 from t1) as ttt))))));
select ship_power.gun_power, ship_info.*
FROM
(
select s.name as ship_name, sum(g.power) as gun_power, max(callibr) as max_callibr
from
ships s inner join ships_guns sg on s.id = sg.ship_id inner join guns g on g.id = sg.guns_id
group by s.name
) ship_power
inner join
(
select s.name as ship_name, sc.class_name, sc.tonange, sc.max_length, sc.start_build, sc.max_guns_size
from
ships s inner join ship_class sc on s.class_id = sc.id
) ship_info using (ship_name)
order by ship_power.ship_name;
#end
#begin
-- JOIN
-- -- -- join condition
select * from t1 inner join (t1 as tt1, t2 as tt2) on t1.col1 = tt1.col1;
select * from (t1 as tt1, t2 as tt2) inner join t1 on t1.col1 = tt1.col1;
select * from t1 as tt1, t2 as tt2 inner join t1 on true;
#end
#begin
-- where_condition test
select col1 from t1 inner join t2 on (t1.col1 = t2.col2);
#end
#begin
-- identifiers tests
select 1 as 123e;
#end
#begin
-- not latin1 literals
select CONVERT( LEFT( CONVERT( '自動下書き' USING binary ), 100 ) USING utf8 ) AS x_0;
select CONVERT( LEFT( CONVERT( '自動' USING binary ), 6 ) USING utf8 ) AS x_0;
select t.*, tt.* FROM wptests_terms AS t INNER JOIN wptests_term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy IN ('category') AND t.name IN ('远征手记') ORDER BY t.name ASC;
#end
#begin
-- cast as integer
SELECT CAST('1' AS INT);
SELECT CAST('1' AS INTEGER);
#end
#begin
-- JSON functions
SELECT JSON_ARRAY(1, "abc", NULL, TRUE, CURTIME());
SELECT JSON_OBJECT('id', 87, 'name', 'carrot');
SELECT JSON_QUOTE('null'), JSON_QUOTE('"null"');
SELECT JSON_CONTAINS(@j, @j2, '$.a');
SELECT JSON_CONTAINS_PATH(@j, 'one', '$.a', '$.e');
SELECT JSON_EXTRACT('[10, 20, [30, 40]]', '$[1]');
SELECT JSON_KEYS('{"a": 1, "b": {"c": 30}}');
SELECT JSON_OVERLAPS("[1,3,5,7]", "[2,5,7]");
SELECT JSON_SEARCH(@j, 'one', 'abc');
SELECT JSON_ARRAY_APPEND(@j, '$[1]', 1);
SELECT JSON_ARRAY_INSERT(@j, '$[1]', 'x');
SELECT JSON_INSERT(@j, '$.a', 10, '$.c', '[true, false]');
SELECT JSON_MERGE('[1, 2]', '[true, false]');
SELECT JSON_MERGE_PATCH('[1, 2]', '[true, false]');
SELECT JSON_MERGE_PRESERVE('[1, 2]', '[true, false]');
SELECT JSON_REMOVE(@j, '$[1]');
SELECT JSON_REPLACE(@j, '$.a', 10, '$.c', '[true, false]');
SELECT JSON_SET(@j, '$.a', 10, '$.c', '[true, false]');
SELECT @j, JSON_UNQUOTE(@j);
SELECT JSON_DEPTH('{}'), JSON_DEPTH('[]'), JSON_DEPTH('true');
SELECT JSON_LENGTH('[1, 2, {"a": 3}]');
SELECT JSON_TYPE(@j);
SELECT JSON_VALID('{"a": 1}');
SELECT JSON_SCHEMA_VALID(@schema, @document);
SELECT JSON_SCHEMA_VALIDATION_REPORT(@schema, @document);
SELECT JSON_PRETTY('123');
SELECT JSON_STORAGE_FREE(jcol), JSON_STORAGE_FREE(jcol) FROM jtable;
SELECT o_id, JSON_ARRAYAGG(attribute) AS attributes FROM t3 GROUP BY o_id;
SELECT o_id, JSON_OBJECTAGG(attribute, value) FROM t3 GROUP BY o_id;
#end
SELECT trigger.num FROM test `trigger`;
-- Valid when SELECT is in stored procedure
SELECT * FROM test LIMIT LIMIT1,LIMIT2;
-- Functions
SELECT mod(3,2);
SELECT SCHEMA();
-- Non Aggregate Functions
SELECT pk, LEAD(pk) OVER (ORDER BY pk) AS l;
SELECT COALESCE(LAG(last_eq.end_variation) OVER (PARTITION BY eq.account_id, eq.execution_name_id, eq.currency ORDER BY eq.start_date), 0) AS start_variation FROM t1;
-- Window Functions
SELECT
e.id,
SUM(e.bin_volume) AS bin_volume,
SUM(e.bin_volume) OVER(PARTITION BY id, e.bin_volume ORDER BY id) AS bin_volume_o,
COALESCE(bin_volume, 0) AS bin_volume2,
COALESCE(LAG(e.bin_volume) OVER(PARTITION BY id ORDER BY e.id), 0) AS bin_volume3,
FIRST_VALUE(id) OVER() AS fv,
DENSE_RANK() OVER(PARTITION BY bin_name ORDER BY id) AS drk,
RANK() OVER(PARTITION BY bin_name) AS rk,
ROW_NUMBER ( ) OVER(PARTITION BY bin_name) AS rn,
NTILE(2) OVER() AS nt
FROM table1 e;
SELECT
id,
SUM(bin_volume) OVER w AS bin_volume_o,
LAG(bin_volume) OVER w AS bin_volume_l,
LAG(bin_volume, 2) OVER w AS bin_volume_l2,
FIRST_VALUE(id) OVER w2 AS fv,
GROUP_CONCAT(bin_volume order by id) AS `rank`
FROM table2
WINDOW w AS (PARTITION BY id, bin_volume ORDER BY id ROWS UNBOUNDED PRECEDING),
w2 AS (PARTITION BY id, bin_volume ORDER BY id DESC ROWS 10 PRECEDING);
#begin
-- https://dev.mysql.com/doc/refman/8.0/en/lateral-derived-tables.html
SELECT
salesperson.name,
max_sale.amount,
max_sale.customer_name
FROM
salesperson,
LATERAL
(SELECT amount, customer_name
FROM all_sales
WHERE all_sales.salesperson_id = salesperson.id
ORDER BY amount DESC LIMIT 1)
AS max_sale;
#end
#begin
-- From MariaDB 10.1.2, pre-query variables are supported
-- src: https://mariadb.com/kb/en/set-statement/
SET STATEMENT some_statement=60 FOR SELECT a FROM some_table;
#end
-- Index hints: https://dev.mysql.com/doc/refman/8.0/en/index-hints.html
SELECT * FROM table1 USE INDEX (col1_index,col2_index) WHERE col1=1 AND col2=2 AND col3=3;
SELECT * FROM table1 FORCE INDEX (col1_index,col2_index) WHERE col1=1 AND col2=2 AND col3=3;
SELECT * FROM t1 USE INDEX (PRIMARY) ORDER BY a;
SELECT * FROM t1 FORCE INDEX (PRIMARY) ORDER BY a;
-- JSON_TABLE
-- https://dev.mysql.com/doc/refman/8.0/en/json-table-functions.html
SELECT *
FROM
JSON_TABLE (
'[{"a":"3"},{"a":2},{"b":1},{"a":0},{"a":[1,2]}]',
"$[*]"
COLUMNS (
rowid FOR ORDINALITY,
ac VARCHAR(100) PATH "$.a" DEFAULT '111' ON EMPTY DEFAULT '999' ON ERROR,
aj JSON PATH "$.a" DEFAULT '{"x": 333}' ON EMPTY,
bx INT EXISTS PATH "$.b",
NESTED PATH '$.b[*]' COLUMNS (b INT PATH '$')
)
) AS tt;
SELECT !(1 + @sum:=1) AS ss;
SELECT (@sum:=1 + 1) AS ss;
SELECT 1 + @sum:=1 AS ss;
SELECT 100 >> @sum:=1 AS ss;
SELECT @sum:=1 < 100 AS ss;
SELECT 100 and @sum:=1 AS ss;
SELECT
@sum := @sum + column_name AS running_sum
FROM
your_table,
(SELECT @sum := 0) AS init
ORDER BY
some_order_column;

View File

@ -0,0 +1,56 @@
#begin
select 1 union select 2;
#end
#begin
select 1 as a1, 10 as a2 union all select 2, 20 union distinct select 3, 30 union distinct select 2, 20 union all select 3, 30;
#end
#begin
(select 1 as a1, 10 as a2) union all (select 2, 20);
#end
#begin
(select 1 as a1, 10 as a2) union all (select 2, 20) union distinct (select 3, 30);
#end
#begin
select 1 as a1, 10 as a2 union all select 2, 20 union distinct (select 3, 30);
#end
#begin
select 1 as a1, 10 as a2 union all (select 2, 20) union distinct (select 3, 30);
#end
#begin
select 1 as a1, 10 as a2 union all (select 2, 20) union distinct select 3, 30;
#end
#begin
select 1 as a1, 10 as a2 union all (select 2, 20) union distinct (select 3, 30) union distinct select 2, 20 union all select 3, 30;
#end
#begin
select 1 as a1, 10 as a2 union all (select 2, 20) union distinct select 3, 30 union distinct select 2, 20 union all select 3, 30;
select 1 as a1, 10 as a2 union all (select 2, 20) union distinct select 3, 30 union distinct (select 2, 20) union all select 3, 30;
#end
#begin
((select 1 as a1, 10 as a2)) union all (((select 2, 20))) union distinct (select 3, 30);
#end
#begin
((select 1 as a1, 10 as a2)) union all (((select 2, 20))) union distinct (select 3, 30 into outfile 'test.dump');
#end
#begin
select 1 as a1, 10 as a2 union all (select 2, 20) union distinct (select 3, 30) union distinct select 2, 20 union all select 3, 30 into outfile 'test.dump';
#end
#begin
select 1 as a1, 10 as a2 union all (select 2, 20) union distinct select 3, 30 order by 1;
select 1 as a1, 10 as a2 union all (select 2, 20 order by 2) union distinct select 3, 30 order by 1;
select 1 as a1, 10 as a2 union all (select 2, 20 order by 2) union distinct (select 3, 30 order by 1);
select 1 as a1, 10 as a2 union all (select 2, 20 order by 2) union distinct (select 3, 30 order by 1) order by 2;
#end

View File

@ -0,0 +1,23 @@
#begin
-- update one-table syntax
update t set col = 100 where id = 101;
update ignore t1 set `column_name` = default, `one-more-column` = (to_seconds(now()) mod 33);
#end
#begin
-- update multiple-table syntax
update t1, t2, t3 inner join t4 using (col_name1, col_name2)
set t1.value_col = t3.new_value_col, t4.`some-col*` = `t2`.`***` * 2
where t1.pk = t2.fk_t1_pk and t2.id = t4.fk_id_entity;
#end
#begin
-- http://dev.mysql.com/doc/refman/5.6/en/update.html
UPDATE t1 SET col1 = col1 + 1;
UPDATE t1 SET col1 = col1 + 1, col2 = col1;
UPDATE t SET id = id + 1 ORDER BY id DESC;
UPDATE items,month SET items.price=month.price WHERE items.id=month.id;
UPDATE `Table A`,`Table B` SET `Table A`.`text`=concat_ws('',`Table A`.`text`,`Table B`.`B-num`," from ",`Table B`.`date`,'/')
WHERE `Table A`.`A-num` = `Table B`.`A-num`;
UPDATE TABLE_1 LEFT JOIN TABLE_2 ON TABLE_1.COLUMN_1= TABLE_2.COLUMN_2 SET TABLE_1.`COLUMN` = EXPR WHERE TABLE_2.COLUMN2 IS NULL;
UPDATE Groups LEFT JOIN (SELECT GroupId, MIN(ValWithinGroup) AS baseVal FROM Groups GROUP BY GroupId) AS GrpSum USING (GroupId) SET ValWithinGroup=ValWithinGroup-baseVal;
update Table1 t1 join Table2 t2 on t1.ID=t2.t1ID join Table3 t3 on t2.ID=t3.t2ID set t1.Value=12345 where t3.ID=54321;
#end

View File

@ -0,0 +1,65 @@
#begin
-- Intersections
-- -- Binary: charset and datatype
select _binary 'hello' as c1;
create table t1(col1 binary(20));
create table t2(col varchar(10) binary character set cp1251);
create table t2(col varchar(10) binary character set binary);
#end
#begin
-- -- Keywords, which can be ID. Intersect that keywords and ID
#end
#begin
-- Expression test
select +-!1 as c;
select 0 in (20 = any (select col1 from t1)) is not null is not unknown as t;
select 0 in (20 = any (select col1 from t1)) is not unknown as t;
select 20 = any (select col1 from t1) is not unknown as t;
select 20 = any (select col1 from t1) as t;
-- select sqrt(20.5) not in (sqrt(20.5) not in (select col1 from t1), 1 in (1, 2, 3, 4)) as c;
select 20 in (10 in (5 in (1, 2, 3, 4, 5), 1, 1, 8), 8, 8, 8);
select (1 in (2, 3, 4)) in (0, 1, 2) as c;
select 1 and (5 between 1 and 10) as c;
select 1 = 16/4 between 3 and 5 as c;
select 1 = 16/4 between 5 and 6 as c;
select 17 member of('[23, "abc", 17, "ab", 10]');
#end
#begin
-- Functions test
select *, sqrt(a), lower(substring(str, 'a', length(str)/2)) as col3 from tab1 where a is not \N;
#end
#begin
-- Spatial data type tests
INSERT INTO geom VALUES (GeomFromWKB(0x0101000000000000000000F03F000000000000F03F));
select y(point(1.25, 3.47)) as y, x(point(1.25, 3.47)) as x;
#end
#begin
-- Signal tests
SIGNAL SQLSTATE '06660' SET MESSAGE_TEXT = 'Database is in read-only mode!';
SIGNAL specialty SET MESSAGE_TEXT = 'An error occurred';
SIGNAL SQLSTATE '01000' SET MESSAGE_TEXT = 'A warning occurred', MYSQL_ERRNO = 1000;
SIGNAL SQLSTATE '77777';
SIGNAL divide_by_zero;
-- Diagnostics tests
RESIGNAL SQLSTATE '06660' SET MESSAGE_TEXT = 'Database is in read-only mode!';
RESIGNAL specialty SET MESSAGE_TEXT = 'An error occurred';
RESIGNAL SQLSTATE '01000' SET MESSAGE_TEXT = 'A warning occurred', MYSQL_ERRNO = 1000;
RESIGNAL SQLSTATE '77777';
RESIGNAL divide_by_zero;
RESIGNAL SET MESSAGE_TEXT = 'Database is in read-only mode!';
RESIGNAL SET MESSAGE_TEXT = 'An error occurred';
RESIGNAL SET MESSAGE_TEXT = 'A warning occurred', MYSQL_ERRNO = 1000;
RESIGNAL;
GET DIAGNOSTICS @p1 = NUMBER, @p2 = ROW_COUNT;
GET DIAGNOSTICS CONDITION 1 @p1 = MYSQL_ERRNO;
GET DIAGNOSTICS CONDITION 1 @p1 = RETURNED_SQLSTATE, @p2 = MESSAGE_TEXT;
GET DIAGNOSTICS CONDITION 1 @p3 = RETURNED_SQLSTATE, @p4 = MESSAGE_TEXT;
GET DIAGNOSTICS CONDITION 1 @p5 = SCHEMA_NAME, @p6 = TABLE_NAME;
GET DIAGNOSTICS CONDITION 1 @errno = MYSQL_ERRNO;
GET DIAGNOSTICS @cno = NUMBER;
GET DIAGNOSTICS CONDITION @cno @errno = MYSQL_ERRNO;
GET CURRENT DIAGNOSTICS CONDITION 1 errno = MYSQL_ERRNO, msg = MESSAGE_TEXT;
GET STACKED DIAGNOSTICS CONDITION 1 errno = MYSQL_ERRNO, msg = MESSAGE_TEXT;
GET CURRENT DIAGNOSTICS errcount = NUMBER;
#end

View File

@ -0,0 +1,121 @@
GRANT ALL ON *.* TO `foo2` @`%`;
GRANT ALL ON *.* TO `foo2` @test;
GRANT ALL ON *.* TO foo2 @test IDENTIFIED BY 'mariadb';
GRANT ALL ON tbl TO admin@localhost;
GRANT ALL ON tbl TO admin;
GRANT ALL ON tbl TO audit_admin;
GRANT ALL PRIVILEGES ON tbl TO admin;
GRANT ALL ON *.* TO admin;
GRANT USAGE ON *.* TO foo2@test IDENTIFIED BY 'mariadb';
GRANT USAGE ON *.* TO foo2@test IDENTIFIED BY PASSWORD '*54958E764CE10E50764C2EECBB71D01F08549980';
GRANT USAGE ON *.* TO `admin`@`%` IDENTIFIED VIA pam;
GRANT USAGE ON *.* TO foo2@test IDENTIFIED VIA pam USING 'mariadb';
CREATE USER safe@'%' IDENTIFIED VIA ed25519 USING PASSWORD('secret');
CREATE USER safe@'%' IDENTIFIED VIA ed25519 USING PASSWORD('secret') OR unix_socket;
GRANT SESSION_VARIABLES_ADMIN on *.* to 'u2';
GRANT 'SESSION_VARIABLES_ADMIN' on *.* to 'u2';
GRANT `SESSION_VARIABLES_ADMIN` on *.* to 'u2';
GRANT "SESSION_VARIABLES_ADMIN" on *.* to 'u2';
GRANT BACKUP_ADMIN ON *.* TO `admin`@`%`;
GRANT CREATE ROLE, DROP ROLE ON *.* TO `admin`@`localhost`;
GRANT AUDIT_ADMIN, BACKUP_ADMIN, BINLOG_ADMIN, BINLOG_ENCRYPTION_ADMIN, BINLOG_MONITOR, BINLOG_REPLAY, CLONE_ADMIN, CONNECTION_ADMIN,
ENCRYPTION_KEY_ADMIN, FEDERATED_ADMIN, FIREWALL_ADMIN, FIREWALL_USER, GROUP_REPLICATION_ADMIN, INNODB_REDO_LOG_ARCHIVE,
NDB_STORED_USER, PERSIST_RO_VARIABLES_ADMIN, READ_ONLY_ADMIN, REPLICATION_APPLIER, REPLICATION_MASTER_ADMIN, REPLICATION_SLAVE_ADMIN, RESOURCE_GROUP_ADMIN,
RESOURCE_GROUP_USER, ROLE_ADMIN, SESSION_VARIABLES_ADMIN, SET_USER_ID, SHOW_ROUTINE, SYSTEM_VARIABLES_ADMIN,
TABLE_ENCRYPTION_ADMIN, VERSION_TOKEN_ADMIN, XA_RECOVER_ADMIN ON *.* TO `admin`@`localhost`;
GRANT SELECT, INSERT, UPDATE ON *.* TO u4 AS u1 WITH ROLE r1;
GRANT SELECT, RELOAD, REPLICATION SLAVE, REPLICATION CLIENT, SHOW VIEW, EVENT, TRIGGER ON *.* TO 'xuser1'@'%', 'xuser2'@'%'
AS 'root'@'%' WITH ROLE 'cloudsqlsuperuser'@'%';
GRANT ALTER ON *.* TO 'mysqluser'@'localhost'
GRANT ALTER ROUTINE ON *.* TO 'mysqluser'@'localhost'
GRANT CREATE ON *.* TO 'mysqluser'@'localhost'
GRANT CREATE TEMPORARY TABLES ON *.* TO 'mysqluser'@'localhost'
GRANT CREATE ROUTINE ON *.* TO 'mysqluser'@'localhost'
GRANT CREATE VIEW ON *.* TO 'mysqluser'@'localhost'
GRANT CREATE USER ON *.* TO 'mysqluser'@'localhost'
GRANT CREATE TABLESPACE ON *.* TO 'mysqluser'@'localhost'
GRANT CREATE ROLE ON *.* TO 'mysqluser'@'localhost'
GRANT DELETE ON *.* TO 'mysqluser'@'localhost'
GRANT DROP ON *.* TO 'mysqluser'@'localhost'
GRANT DROP ROLE ON *.* TO 'mysqluser'@'localhost'
GRANT EVENT ON *.* TO 'mysqluser'@'localhost'
GRANT EXECUTE ON *.* TO 'mysqluser'@'localhost'
GRANT FILE ON *.* TO 'mysqluser'@'localhost'
GRANT GRANT OPTION ON *.* TO 'mysqluser'@'localhost'
GRANT INDEX ON *.* TO 'mysqluser'@'localhost'
GRANT INSERT ON *.* TO 'mysqluser'@'localhost'
GRANT LOCK TABLES ON *.* TO 'mysqluser'@'localhost'
GRANT PROCESS ON *.* TO 'mysqluser'@'localhost'
GRANT PROXY ON *.* TO 'mysqluser'@'localhost'
GRANT REFERENCES ON *.* TO 'mysqluser'@'localhost'
GRANT RELOAD ON *.* TO 'mysqluser'@'localhost'
GRANT REPLICATION CLIENT ON *.* TO 'mysqluser'@'localhost'
GRANT REPLICATION SLAVE ON *.* TO 'mysqluser'@'localhost'
GRANT SELECT ON *.* TO 'mysqluser'@'localhost'
GRANT SHOW VIEW ON *.* TO 'mysqluser'@'localhost'
GRANT SHOW DATABASES ON *.* TO 'mysqluser'@'localhost'
GRANT SHUTDOWN ON *.* TO 'mysqluser'@'localhost'
GRANT SUPER ON *.* TO 'mysqluser'@'localhost'
GRANT TRIGGER ON *.* TO 'mysqluser'@'localhost'
GRANT UPDATE ON *.* TO 'mysqluser'@'localhost'
GRANT USAGE ON *.* TO 'mysqluser'@'localhost'
GRANT APPLICATION_PASSWORD_ADMIN ON *.* TO 'mysqluser'@'localhost'
GRANT AUDIT_ADMIN ON *.* TO 'mysqluser'@'localhost'
GRANT BACKUP_ADMIN ON *.* TO 'mysqluser'@'localhost'
GRANT BINLOG_ADMIN ON *.* TO 'mysqluser'@'localhost'
GRANT BINLOG_ENCRYPTION_ADMIN ON *.* TO 'mysqluser'@'localhost'
GRANT CLONE_ADMIN ON *.* TO 'mysqluser'@'localhost'
GRANT CONNECTION_ADMIN ON *.* TO 'mysqluser'@'localhost'
GRANT ENCRYPTION_KEY_ADMIN ON *.* TO 'mysqluser'@'localhost'
GRANT FIREWALL_ADMIN ON *.* TO 'mysqluser'@'localhost'
GRANT FIREWALL_USER ON *.* TO 'mysqluser'@'localhost'
GRANT FLUSH_OPTIMIZER_COSTS ON *.* TO 'mysqluser'@'localhost'
GRANT FLUSH_STATUS ON *.* TO 'mysqluser'@'localhost'
GRANT FLUSH_TABLES ON *.* TO 'mysqluser'@'localhost'
GRANT FLUSH_USER_RESOURCES ON *.* TO 'mysqluser'@'localhost'
GRANT GROUP_REPLICATION_ADMIN ON *.* TO 'mysqluser'@'localhost'
GRANT INNODB_REDO_LOG_ARCHIVE ON *.* TO 'mysqluser'@'localhost'
GRANT INNODB_REDO_LOG_ENABLE ON *.* TO 'mysqluser'@'localhost'
GRANT NDB_STORED_USER ON *.* TO 'mysqluser'@'localhost'
GRANT PERSIST_RO_VARIABLES_ADMIN ON *.* TO 'mysqluser'@'localhost'
GRANT REPLICATION_APPLIER ON *.* TO 'mysqluser'@'localhost'
GRANT REPLICATION_SLAVE_ADMIN ON *.* TO 'mysqluser'@'localhost'
GRANT RESOURCE_GROUP_ADMIN ON *.* TO 'mysqluser'@'localhost'
GRANT RESOURCE_GROUP_USER ON *.* TO 'mysqluser'@'localhost'
GRANT ROLE_ADMIN ON *.* TO 'mysqluser'@'localhost'
GRANT SERVICE_CONNECTION_ADMIN ON *.* TO 'mysqluser'@'localhost'
GRANT SESSION_VARIABLES_ADMIN ON *.* TO 'mysqluser'@'localhost'
GRANT SET_USER_ID ON *.* TO 'mysqluser'@'localhost'
GRANT SHOW_ROUTINE ON *.* TO 'mysqluser'@'localhost'
GRANT SYSTEM_USER ON *.* TO 'mysqluser'@'localhost'
GRANT SYSTEM_VARIABLES_ADMIN ON *.* TO 'mysqluser'@'localhost'
GRANT TABLE_ENCRYPTION_ADMIN ON *.* TO 'mysqluser'@'localhost'
GRANT VERSION_TOKEN_ADMIN ON *.* TO 'mysqluser'@'localhost'
GRANT XA_RECOVER_ADMIN ON *.* TO 'mysqluser'@'localhost'
GRANT reader TO 'mysqluser'@'localhost'
GRANT reader TO topreader
GRANT 'db_old_ro'@'%' TO 'oghalawinji'@'%'
GRANT FLUSH_OPTIMIZER_COSTS, FLUSH_STATUS, FLUSH_TABLES, FLUSH_USER_RESOURCES, PASSWORDLESS_USER_ADMIN ON *.* TO "@"
REVOKE reader FROM 'mysqluser'@'localhost'
REVOKE reader FROM topreader
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'retool'@
-- MariaDB
GRANT BINLOG_MONITOR ON *.* TO 'mysqluser'@'localhost'
GRANT BINLOG_REPLAY ON *.* TO 'mysqluser'@'localhost'
GRANT FEDERATED_ADMIN ON *.* TO 'mysqluser'@'localhost'
GRANT READ_ONLY_ADMIN ON *.* TO 'mysqluser'@'localhost'
GRANT REPLICATION_MASTER_ADMIN ON *.* TO 'mysqluser'@'localhost'
GRANT REPLICATION REPLICA ON *.* TO 'mysqluser'@'localhost'
-- Set Role
SET ROLE DEFAULT;
SET ROLE 'role1', 'role2';
SET ROLE ALL;
SET ROLE ALL EXCEPT 'role1', 'role2';
-- Set Default Role
SET DEFAULT ROLE 'admin', 'developer' TO 'joe'@'10.0.0.1';
SET DEFAULT ROLE `admin`@'%' to `dt_user`@`%`;
-- MySQL on Amazon RDS
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, LOAD FROM S3, SELECT INTO S3, INVOKE LAMBDA ON *.* TO 'debezium_user'@'127.0.0.1';
-- All privileges of MariaDB Enterprise Server 10.6: https://mariadb.com/docs/server/ref/es10.6/privileges/
GRANT ADMIN OPTION, ALL PRIVILEGES, ALTER, ALTER ROUTINE, BINLOG ADMIN, BINLOG MONITOR, BINLOG REPLAY, CONNECTION ADMIN, CREATE, CREATE ROUTINE, CREATE TABLESPACE, CREATE TEMPORARY TABLES, CREATE USER, CREATE VIEW, DELETE, DELETE HISTORY, DROP, EVENT, EXECUTE, FEDERATED ADMIN, FILE, GRANT OPTION, INDEX, INSERT, LOCK TABLES, PROCESS, PROXY, READ ONLY ADMIN, READ_ONLY ADMIN, REFERENCES, RELOAD, REPLICA MONITOR, REPLICATION CLIENT, REPLICATION MASTER ADMIN, REPLICATION REPLICA, REPLICATION REPLICA ADMIN, REPLICATION SLAVE, REPLICATION SLAVE ADMIN, SELECT, SET USER, SHOW DATABASES, SHOW SCHEMAS, SHOW VIEW, SHUTDOWN, SLAVE MONITOR, SUPER, TRIGGER, UPDATE, USAGE ON *.* TO `my-user`@`%`;

View File

@ -0,0 +1,14 @@
#begin
KILL CONNECTION 12345;
KILL QUERY 12345;
KILL CONNECTION @conn_variable;
KILL QUERY @query_variable;
KILL CONNECTION @@global_variable;
KILL QUERY @@global_variable;
#end
#begin
create procedure f (a1 int)
begin
kill query a1;
end;
#end

View File

@ -0,0 +1,20 @@
#begin
-- Mysql spec comment
select 1 /*!, ' hello' */, 2 /*! union select 5, ' world', 10 */;
select * from t /*! where col = somefunc(col2) order by sortcol */; insert into mytable /*!(col2, col3, col1) */ values (load_file('sompath'), 'str1', 2);
insert into tbl values ('a', 1, 'b'), ('c', 2, 'd'), ('e', 3, 'f') /*! on duplicate key update notsecret_col = secret_col */;
select clientname, email from users where clientname='Petrov'/*! UNION SELECT 1,load_file('/etc/passwd')*/;#
#end
#begin
-- Duplicate query with ordinal comment
select 1 /*, ' hello' */, 2 /*! union select 5, ' world', 10 */;
select * from t /* where col = somefunc(col2) order by sortcol */; insert into mytable /*(col2, col3, col1) */ values (load_file('sompath'), 'str1', 2);
insert into tbl values ('a', 1, 'b'), ('c', 2, 'd'), ('e', 3, 'f') /* on duplicate key update notsecret_col = secret_col */;
select clientname, email from users where clientname='Petrov'/* UNION SELECT 1,load_file('/etc/passwd')*/;#
#end
#begin
-- Empty line comment
--
--
#end

View File

@ -0,0 +1,7 @@
#begin
OPTIMIZE TABLE t1;
OPTIMIZE TABLE t1, t2;
OPTIMIZE TABLES t1;
OPTIMIZE TABLES t1, t2;
optimize local table t1 wait 100;
#end

View File

@ -0,0 +1,161 @@
-- SHOW statements: https://mariadb.com/kb/en/show/
SHOW AUTHORS;
SHOW BINARY LOGS;
SHOW MASTER LOGS;
SHOW BINLOG EVENTS;
SHOW BINLOG EVENTS IN 'mysql_sandbox10019-bin.000001';
SHOW BINLOG EVENTS IN 'mysql_sandbox10019-bin.000002' FROM 0 LIMIT 10, 20;
SHOW CHARACTER SET;
SHOW CHARACTER SET LIKE 'latin%';
SHOW CHARACTER SET WHERE Maxlen LIKE '2';
SHOW CLIENT_STATISTICS;
SHOW COLLATION;
SHOW COLLATION LIKE 'latin1%';
SHOW COLLATION WHERE Charset = 'latin1';
SHOW COLLATION WHERE Sortlen LIKE '8' AND Charset LIKE 'utf8mb4';
SHOW COLUMNS FROM mytable FROM mydb;
SHOW COLUMNS FROM mydb.mytable;
SHOW FULL COLUMNS FROM mytable;
SHOW COLUMNS FROM employees WHERE Type LIKE 'Varchar%';
SHOW FIELDS FROM mytable;
SHOW FIELDS FROM employees WHERE Type LIKE 'Varchar%';
SHOW FIELDS FROM employees LIKE 'Id';
SHOW FIELDS FROM employees WHERE Type = 'int(10)';
SHOW CONTRIBUTORS;
SHOW CREATE DATABASE test;
SHOW CREATE SCHEMA test;
SHOW CREATE EVENT test.e_daily;
SHOW CREATE FUNCTION VatCents;
SHOW CREATE PACKAGE employee_tools;
SHOW CREATE PACKAGE BODY employee_tools;
SHOW CREATE PROCEDURE test.simpleproc;
SHOW CREATE SEQUENCE seq1;
SHOW CREATE TABLE table_name;
SHOW CREATE TRIGGER trigger_name;
SHOW CREATE USER user_name;
SHOW CREATE VIEW view_name;
SHOW DATABASES;
SHOW DATABASES LIKE 'm%';
SHOW SCHEMAS;
SHOW ENGINE INNODB STATUS;
SHOW ENGINE INNODB MUTEX;
SHOW ENGINE PERFORMANCE_SCHEMA STATUS;
SHOW ENGINE ROCKSDB STATUS;
SHOW ENGINES;
SHOW STORAGE ENGINES;
SHOW TABLE TYPES;
SHOW ERRORS LIMIT 20;
SHOW ERRORS LIMIT 20, 80;
SHOW ERRORS LIMIT 20 OFFSET 80;
SHOW COUNT(*) ERRORS;
SHOW EVENTS;
SHOW EVENTS FROM test;
SHOW EVENTS IN schema_name;
SHOW EVENTS LIKE 'e_%';
SHOW EVENTS WHERE Db = 'myschema';
SHOW EXPLAIN FOR 1;
SHOW EXPLAIN FORMAT=JSON FOR 1;
EXPLAIN FOR CONNECTION 1;
EXPLAIN FORMAT=JSON FOR CONNECTION 1;
SHOW FUNCTION CODE func_name;
SHOW FUNCTION STATUS;
SHOW FUNCTION STATUS LIKE 'V%';
SHOW FUNCTION STATUS WHERE Name = 'VatCents';
SHOW GRANTS;
SHOW GRANTS FOR CURRENT_USER;
SHOW GRANTS FOR CURRENT_USER();
SHOW GRANTS SHOW GRANTS FOR user_name;
SHOW INDEX FROM mytable FROM mydb;
SHOW INDEX FROM mydb.mytable;
SHOW INDEXES FROM mydb.mytable;
SHOW KEYS FROM mydb.mytable;
SHOW INDEX FROM mydb.mytable WHERE Index_type = 'BTREE';
SHOW INDEX_STATISTICS;
SHOW INNODB STATUS;
SHOW LOCALES;
SHOW MASTER STATUS;
SHOW BINLOG STATUS;
SHOW OPEN TABLES;
SHOW OPEN TABLES FROM mydb.mytable;
SHOW OPEN TABLES LIKE 'mytab%';
SHOW PACKAGE BODY STATUS;
SHOW PACKAGE BODY STATUS LIKE 'pkg1';
SHOW PACKAGE STATUS;
SHOW PACKAGE STATUS LIKE 'pkg1';
SHOW PLUGINS;
SHOW PLUGINS SONAME 'ha_example.so';
SHOW PLUGINS SONAME LIKE 'ha_%';
SHOW PRIVILEGES;
SHOW PROCEDURE CODE proc_name;
SHOW PROCEDURE STATUS;
SHOW PROCEDURE STATUS LIKE 'p1';
SHOW PROCESSLIST;
SHOW FULL PROCESSLIST;
SHOW PROFILE;
SHOW PROFILE FOR QUERY 1;
SHOW PROFILE FOR QUERY 1 LIMIT 10;
SHOW PROFILE FOR QUERY 1 LIMIT 10 OFFSET 50;
SHOW PROFILE ALL FOR QUERY 1;
SHOW PROFILE CPU FOR QUERY 1;
SHOW PROFILE BLOCK IO FOR QUERY 1;
SHOW PROFILE CONTEXT SWITCHES FOR QUERY 1;
SHOW PROFILE IPC FOR QUERY 1;
SHOW PROFILE MEMORY FOR QUERY 1;
SHOW PROFILE PAGE FAULTS FOR QUERY 1;
SHOW PROFILE SOURCE FOR QUERY 1;
SHOW PROFILE SWAPS FOR QUERY 1;
SHOW PROFILE CPU, MEMORY, SWAPS FOR QUERY 1;
SHOW PROFILES;
SHOW QUERY_RESPONSE_TIME;
SHOW RELAYLOG EVENTS;
SHOW RELAYLOG 'connection_name' EVENTS;
SHOW RELAYLOG EVENTS IN 'log_name';
SHOW RELAYLOG EVENTS FROM 123;
SHOW RELAYLOG EVENTS LIMIT 10;
SHOW RELAYLOG EVENTS LIMIT 10, 50;
SHOW RELAYLOG EVENTS FOR CHANNEL 'channel_name';
SHOW RELAYLOG 'connection_name' EVENTS IN 'log_name' FROM 123 LIMIT 10, 50 FOR CHANNEL 'channel_name';
SHOW SLAVE HOSTS;
SHOW REPLICA HOSTS;
SHOW SLAVE STATUS;
SHOW SLAVE 'connection_name' STATUS;
SHOW SLAVE 'connection_name' STATUS FOR CHANNEL 'connection_name';
SHOW SLAVE STATUS FOR CHANNEL 'connection_name';
SHOW REPLICA STATUS;
SHOW REPLICA 'connection_name' STATUS;
SHOW REPLICA 'connection_name' STATUS FOR CHANNEL 'connection_name';
SHOW REPLICA STATUS FOR CHANNEL 'connection_name';
SHOW ALL SLAVES STATUS;
SHOW ALL REPLICAS STATUS;
SHOW STATUS;
SHOW GLOBAL STATUS
SHOW SESSION STATUS
SHOW STATUS LIKE 'Key%';
SHOW TABLE STATUS;
SHOW TABLE STATUS FROM db_name;
SHOW TABLE STATUS IN db_name;
SHOW TABLE STATUS LIKE 'pattern';
SHOW TABLE STATUS WHERE Name = 'table_name';
SHOW TABLES;
SHOW TABLES WHERE Tables_in_test LIKE 'a%';
SHOW FULL TABLES;
SHOW TABLE_STATISTICS;
SHOW TRIGGERS;
SHOW TRIGGERS LIKE 'animals';
SHOW TRIGGERS FROM test WHERE `Table` = 'user';
SHOW TRIGGERS WHERE Event LIKE 'Insert';
SHOW USER_STATISTICS;
SHOW VARIABLES;
SHOW VARIABLES LIKE 'maria_group_commit';
SHOW SESSION VARIABLES LIKE 'maria_group_commit';
SHOW GLOBAL VARIABLES LIKE '%maria%';
SHOW WARNINGS;
SHOW WARNINGS LIMIT 10;
SHOW WARNINGS LIMIT 10, 10;
SHOW WSREP_MEMBERSHIP;
SHOW WSREP_STATUS;
-- Extended SHOW: https://mariadb.com/kb/en/extended-show/
SHOW TABLES WHERE Tables_in_test LIKE 'a%';
SHOW VARIABLES WHERE Variable_name LIKE 'aria%' AND Value >8192;
SHOW VARIABLES LIKE 'aria%';

View File

@ -0,0 +1,35 @@
#begin
-- Intersections
-- -- Binary: charset and datatype
select _binary 'hello' as c1;
create table t1(col1 binary(20));
create table t2(col varchar(10) binary character set cp1251);
create table t2(col varchar(10) binary character set binary);
#end
#begin
-- -- Keywords, which can be ID. Intersect that keywords and ID
#end
#begin
-- Expression test
select +-!1 as c;
select 0 in (20 = any (select col1 from t1)) is not null is not unknown as t;
select 0 in (20 = any (select col1 from t1)) is not unknown as t;
select 20 = any (select col1 from t1) is not unknown as t;
select 20 = any (select col1 from t1) as t;
-- select sqrt(20.5) not in (sqrt(20.5) not in (select col1 from t1), 1 in (1, 2, 3, 4)) as c;
select 20 in (10 in (5 in (1, 2, 3, 4, 5), 1, 1, 8), 8, 8, 8);
select (1 in (2, 3, 4)) in (0, 1, 2) as c;
select 1 and (5 between 1 and 10) as c;
select 1 = 16/4 between 3 and 5 as c;
select 1 = 16/4 between 5 and 6 as c;
#end
#begin
-- Functions test
select *, sqrt(a), lower(substring(str, 'a', length(str)/2)) as col3 from tab1 where a is not \N;
#end
#begin
-- Spatial data type tests
INSERT INTO geom VALUES (GeomFromWKB(0x0101000000000000000000F03F000000000000F03F));
select y(point(1.25, 3.47)) as y, x(point(1.25, 3.47)) as x;
#end

View File

@ -0,0 +1,13 @@
-- Special statements from the MariaDB userstat plugin: https://mariadb.com/kb/en/user-statistics/
-- SHOW statements: https://mariadb.com/kb/en/user-statistics/#using-the-show-statements
SHOW USER_STATISTICS;
SHOW CLIENT_STATISTICS;
SHOW INDEX_STATISTICS;
SHOW TABLE_STATISTICS;
-- FLUSH statements: https://mariadb.com/kb/en/user-statistics/#flushing-plugin-data
FLUSH USER_STATISTICS;
FLUSH CLIENT_STATISTICS;
FLUSH INDEX_STATISTICS;
FLUSH TABLE_STATISTICS;

View File

@ -0,0 +1,2006 @@
#begin 1
SET NAMES 'utf8';
SET collation_connection = "utf8_unicode_ci";
SELECT TAG
FROM b_cache_tag
WHERE SITE_ID = 's1'
AND CACHE_SALT = '/eda'
AND RELATIVE_PATH = '/s1/bitrix/menu/06f'
;
INSERT IGNORE INTO b_cache_tag (SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG)
VALUES
('s1', '/eda', '/s1/bitrix/menu/06f', 'bitrix:menu');
SELECT * FROM `b_forum_user` LIMIT 0;
UPDATE b_forum_user SET LAST_VISIT=now() WHERE USER_ID = 1;
UPDATE b_forum_stat SET `USER_ID` = 1, `IP_ADDRESS` = '10.0.70.52', `SHOW_NAME` = 'admin', `LAST_VISIT` = now(), `SITE_ID` = 's1', `FORUM_ID` = 0, `TOPIC_ID` = 0 WHERE PHPSESSID='o50tf3qfh12hfbbfcpis0npeb2';
SELECT TAG
FROM b_cache_tag
WHERE SITE_ID = 's1'
AND CACHE_SALT = '/eda'
AND RELATIVE_PATH = '/s1/bitrix/menu/345'
;
INSERT IGNORE INTO b_cache_tag (SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG)
VALUES
('s1', '/eda', '/s1/bitrix/menu/345', 'bitrix:menu');
SELECT
COUNT(ST.ID) as CNT
FROM
b_sticker ST
WHERE
((ST.PERSONAL='Y' AND ST.CREATED_BY=1) OR ST.PERSONAL='N')
AND ST.CLOSED='N' AND ST.DELETED='N' AND ST.SITE_ID='s1'
AND ST.PAGE_URL='/forum/rules/';
SET NAMES 'utf8';
SET collation_connection = "utf8_unicode_ci";
SELECT * FROM `b_forum_user` LIMIT 0;
UPDATE b_forum_user SET LAST_VISIT=now() WHERE USER_ID = 1;
UPDATE b_forum_stat SET `USER_ID` = 1, `IP_ADDRESS` = '10.0.70.52', `SHOW_NAME` = 'admin', `LAST_VISIT` = now(), `SITE_ID` = 's1', `FORUM_ID` = 1, `TOPIC_ID` = 0 WHERE PHPSESSID='o50tf3qfh12hfbbfcpis0npeb2';
SELECT BF.ID AS FORUM_ID , COUNT(FT_RENEW.ID) TCRENEW
FROM b_forum BF
LEFT JOIN b_forum_user_forum FUF ON (FUF.USER_ID = 1 AND FUF.FORUM_ID = BF.ID)
LEFT JOIN b_forum_user_forum FUF_ALL ON (FUF_ALL.USER_ID = 1 AND FUF_ALL.FORUM_ID = 0)
LEFT JOIN b_forum_topic FT_RENEW ON
(
BF.ID = FT_RENEW.FORUM_ID AND FT_RENEW.STATE != 'L' AND
(FUF_ALL.LAST_VISIT IS NULL OR FT_RENEW.ABS_LAST_POST_DATE > FUF_ALL.LAST_VISIT)
)
LEFT JOIN b_forum_user_topic FUT_RENEW ON (
FUT_RENEW.FORUM_ID = BF.ID AND FUT_RENEW.TOPIC_ID = FT_RENEW.ID AND FUT_RENEW.USER_ID = 1)
WHERE(
(BF.ID IN (1 ,2))
AND
(
FUT_RENEW.LAST_VISIT IS NULL
AND
(
(FUF_ALL.LAST_VISIT IS NULL AND FUF.LAST_VISIT IS NULL)
OR
(
FUF.LAST_VISIT IS NOT NULL
AND
(FUF.LAST_VISIT < FT_RENEW.ABS_LAST_POST_DATE OR FUF.LAST_VISIT < FT_RENEW.LAST_POST_DATE)
)
OR
(
FUF.LAST_VISIT IS NULL
AND
FUF_ALL.LAST_VISIT IS NOT NULL
AND
(
(
FUF_ALL.LAST_VISIT < FT_RENEW.ABS_LAST_POST_DATE
OR
FUF_ALL.LAST_VISIT < FT_RENEW.LAST_POST_DATE
)
)
)
)
)
OR (
FUT_RENEW.LAST_VISIT IS NOT NULL
AND
(
FUT_RENEW.LAST_VISIT < FT_RENEW.ABS_LAST_POST_DATE
OR
FUT_RENEW.LAST_VISIT < FT_RENEW.LAST_POST_DATE
)
)
)
GROUP BY BF.ID
;
SELECT FST.*, FU.*, FSTAT.IP_ADDRESS, FSTAT.PHPSESSID,
DATE_FORMAT(FSTAT.LAST_VISIT, '%d.%m.%Y %H:%i:%s') AS LAST_VISIT,
FSTAT.FORUM_ID, FSTAT.TOPIC_ID,
U.LOGIN, U.NAME, U.SECOND_NAME, U.LAST_NAME,
FSTAT.SHOW_NAME
FROM ( SELECT FSTAT.USER_ID, MAX(FSTAT.ID) FST_ID, COUNT(FSTAT.PHPSESSID) COUNT_USER FROM b_forum_stat FSTAT LEFT JOIN b_user U ON (FSTAT.USER_ID=U.ID) WHERE 1=1 AND (FSTAT.SITE_ID = 's1') AND (FSTAT.USER_ID = 0 OR U.ACTIVE = 'Y') AND (FROM_UNIXTIME(UNIX_TIMESTAMP(CURRENT_TIMESTAMP) - 600) <= FSTAT.LAST_VISIT) GROUP BY FSTAT.USER_ID) FST LEFT JOIN b_forum_stat FSTAT ON (FST.FST_ID = FSTAT.ID) LEFT JOIN b_forum_user FU ON (FST.USER_ID = FU.USER_ID) LEFT JOIN b_user U ON (FST.USER_ID = U.ID) ORDER BY FSTAT.USER_ID DESC;
SELECT COUNT('x') as C FROM b_user;
SELECT COUNT(FU.ID) AS CNT FROM b_forum_user FU INNER JOIN b_user U ON (U.ID = FU.USER_ID) WHERE (U.ACTIVE = 'Y') ;
SELECT COUNT(FU.ID) AS CNT FROM b_forum_user FU INNER JOIN b_user U ON (U.ID = FU.USER_ID) WHERE (NUM_POSTS > 0) AND (U.ACTIVE = 'Y') ;
SELECT F_FORUM.*, F.FORUM_GROUP_ID, F.NAME, F.DESCRIPTION, F.SORT, F.ACTIVE,
F.ALLOW_HTML, F.ALLOW_ANCHOR, F.ALLOW_BIU, F.ALLOW_IMG, F.ALLOW_VIDEO,
F.ALLOW_LIST, F.ALLOW_QUOTE, F.ALLOW_CODE, F.ALLOW_FONT, F.ALLOW_SMILES,
F.ALLOW_ALIGN, F.ALLOW_UPLOAD, F.ALLOW_UPLOAD_EXT, F.ALLOW_MOVE_TOPIC,
F.ALLOW_NL2BR, F.ALLOW_TABLE, F.ALLOW_TOPIC_TITLED, F.ALLOW_SIGNATURE,
F.ASK_GUEST_EMAIL, F.USE_CAPTCHA, F.MODERATION, F.INDEXATION, F.DEDUPLICATION,
F.ORDER_BY, F.ORDER_DIRECTION,
'' as LID, '' as DIR,
F.TOPICS, F.XML_ID,
F.POSTS, F.LAST_POSTER_ID, F.LAST_POSTER_NAME,
DATE_FORMAT(F.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE,
F.LAST_MESSAGE_ID, FM.TOPIC_ID as TID, F.LAST_MESSAGE_ID as MID,
F.POSTS_UNAPPROVED, F.ABS_LAST_POSTER_ID, F.ABS_LAST_POSTER_NAME,
DATE_FORMAT(F.ABS_LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as ABS_LAST_POST_DATE,
F.ABS_LAST_MESSAGE_ID, FM_ABS.TOPIC_ID as ABS_TID,
F.EVENT1, F.EVENT2, F.EVENT3,
FT.TITLE, FT.SOCNET_GROUP_ID, FT.OWNER_ID,
TRIM(BOTH '-' FROM REPLACE(CONCAT_WS('-',FT.ID,FT.TITLE_SEO), '--', '-')) AS TITLE_SEO,
FT.HTML AS TOPIC_HTML, FM.PARAM1, FM.PARAM2,
FT_ABS.TITLE as ABS_TITLE, FT_ABS.SOCNET_GROUP_ID as ABS_SOCNET_GROUP_ID, FT_ABS.OWNER_ID as ABS_OWNER_ID,
TRIM(BOTH '-' FROM REPLACE(CONCAT_WS('-',FT_ABS.ID,FT_ABS.TITLE_SEO), '--', '-')) AS ABS_TITLE_SEO,
FT_ABS.HTML AS ABS_TOPIC_HTML, FM_ABS.PARAM1 as ABS_PARAM1, FM_ABS.PARAM2 as ABS_PARAM2,
F.HTML
FROM
(
SELECT F.ID , F2S.PATH2FORUM_MESSAGE
FROM b_forum F
INNER JOIN b_forum2site F2S ON (F2S.FORUM_ID=F.ID)
WHERE (1=1 AND ((F2S.SITE_ID = 's1')) AND ((F.ID IN (1, 2))) )
GROUP BY F.ID,F2S.PATH2FORUM_MESSAGE
) F_FORUM
INNER JOIN b_forum F ON (F_FORUM.ID = F.ID)
LEFT JOIN b_forum_group FG ON F.FORUM_GROUP_ID = FG.ID
LEFT JOIN b_forum_message FM ON F.LAST_MESSAGE_ID = FM.ID
LEFT JOIN b_forum_topic FT ON FM.TOPIC_ID = FT.ID
LEFT JOIN b_forum_message FM_ABS ON F.ABS_LAST_MESSAGE_ID = FM_ABS.ID
LEFT JOIN b_forum_topic FT_ABS ON FM_ABS.TOPIC_ID = FT_ABS.ID
;
SET NAMES 'utf8';
SET collation_connection = "utf8_unicode_ci";
SELECT TAG
FROM b_cache_tag
WHERE SITE_ID = 's1'
AND CACHE_SALT = '/6b3'
AND RELATIVE_PATH = '/s1/bitrix/menu/06f'
;
INSERT IGNORE INTO b_cache_tag (SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG)
VALUES
('s1', '/6b3', '/s1/bitrix/menu/06f', 'bitrix:menu');
SELECT * FROM `b_forum_user` LIMIT 0;
UPDATE b_forum_user SET LAST_VISIT=now() WHERE USER_ID = 1;
UPDATE b_forum_stat SET `USER_ID` = 1, `IP_ADDRESS` = '10.0.70.52', `SHOW_NAME` = 'admin', `LAST_VISIT` = now(), `SITE_ID` = 's1', `FORUM_ID` = 0, `TOPIC_ID` = 0 WHERE PHPSESSID='o50tf3qfh12hfbbfcpis0npeb2';
SELECT F_FORUM.*, F.FORUM_GROUP_ID, F.NAME, F.DESCRIPTION, F.SORT, F.ACTIVE,
F.ALLOW_HTML, F.ALLOW_ANCHOR, F.ALLOW_BIU, F.ALLOW_IMG, F.ALLOW_VIDEO,
F.ALLOW_LIST, F.ALLOW_QUOTE, F.ALLOW_CODE, F.ALLOW_FONT, F.ALLOW_SMILES,
F.ALLOW_ALIGN, F.ALLOW_UPLOAD, F.ALLOW_UPLOAD_EXT, F.ALLOW_MOVE_TOPIC,
F.ALLOW_NL2BR, F.ALLOW_TABLE, F.ALLOW_TOPIC_TITLED, F.ALLOW_SIGNATURE,
'' as PATH2FORUM_MESSAGE,
F.ASK_GUEST_EMAIL, F.USE_CAPTCHA, F.MODERATION, F.INDEXATION, F.DEDUPLICATION,
F.ORDER_BY, F.ORDER_DIRECTION,
'' as LID, '' as DIR,
F.TOPICS, F.XML_ID,
F.POSTS, F.LAST_POSTER_ID, F.LAST_POSTER_NAME,
DATE_FORMAT(F.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE,
F.LAST_MESSAGE_ID, FM.TOPIC_ID as TID, F.LAST_MESSAGE_ID as MID,
F.POSTS_UNAPPROVED, F.ABS_LAST_POSTER_ID, F.ABS_LAST_POSTER_NAME,
DATE_FORMAT(F.ABS_LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as ABS_LAST_POST_DATE,
F.ABS_LAST_MESSAGE_ID, FM_ABS.TOPIC_ID as ABS_TID,
F.EVENT1, F.EVENT2, F.EVENT3,
FT.TITLE, FT.SOCNET_GROUP_ID, FT.OWNER_ID,
TRIM(BOTH '-' FROM REPLACE(CONCAT_WS('-',FT.ID,FT.TITLE_SEO), '--', '-')) AS TITLE_SEO,
FT.HTML AS TOPIC_HTML, FM.PARAM1, FM.PARAM2,
FT_ABS.TITLE as ABS_TITLE, FT_ABS.SOCNET_GROUP_ID as ABS_SOCNET_GROUP_ID, FT_ABS.OWNER_ID as ABS_OWNER_ID,
TRIM(BOTH '-' FROM REPLACE(CONCAT_WS('-',FT_ABS.ID,FT_ABS.TITLE_SEO), '--', '-')) AS ABS_TITLE_SEO,
FT_ABS.HTML AS ABS_TOPIC_HTML, FM_ABS.PARAM1 as ABS_PARAM1, FM_ABS.PARAM2 as ABS_PARAM2,
F.HTML
FROM
(
SELECT F.ID
FROM b_forum F
WHERE (1=1 )
GROUP BY F.ID
) F_FORUM
INNER JOIN b_forum F ON (F_FORUM.ID = F.ID)
LEFT JOIN b_forum_group FG ON F.FORUM_GROUP_ID = FG.ID
LEFT JOIN b_forum_message FM ON F.LAST_MESSAGE_ID = FM.ID
LEFT JOIN b_forum_topic FT ON FM.TOPIC_ID = FT.ID
LEFT JOIN b_forum_message FM_ABS ON F.ABS_LAST_MESSAGE_ID = FM_ABS.ID
LEFT JOIN b_forum_topic FT_ABS ON FM_ABS.TOPIC_ID = FT_ABS.ID
ORDER BY F.SORT ASC ;
SELECT COUNT('x') as CNT FROM b_forum_user FU LEFT JOIN b_user U ON (FU.USER_ID = U.ID) WHERE 1 = 1 ;
SELECT FU.ID, U.ID as USER_ID, FU.SHOW_NAME, FU.DESCRIPTION, FU.IP_ADDRESS,
FU.REAL_IP_ADDRESS, FU.AVATAR, FU.NUM_POSTS, FU.POINTS as NUM_POINTS,
FU.INTERESTS, FU.SUBSC_GROUP_MESSAGE, FU.SUBSC_GET_MY_MESSAGE,
FU.LAST_POST, FU.ALLOW_POST, FU.SIGNATURE, FU.RANK_ID,
U.EMAIL, U.NAME, U.SECOND_NAME, U.LAST_NAME, U.LOGIN, U.PERSONAL_BIRTHDATE,
DATE_FORMAT(FU.DATE_REG, '%d.%m.%Y') as DATE_REG,
DATE_FORMAT(FU.LAST_VISIT, '%d.%m.%Y %H:%i:%s') as LAST_VISIT,
DATE_FORMAT(FU.LAST_VISIT, '%d.%m.%Y') as LAST_VISIT_SHORT,
DATE_FORMAT(U.DATE_REGISTER, '%d.%m.%Y') as DATE_REGISTER_SHORT,
U.PERSONAL_ICQ, U.PERSONAL_WWW, U.PERSONAL_PROFESSION, U.DATE_REGISTER,
U.PERSONAL_CITY, U.PERSONAL_COUNTRY, U.PERSONAL_PHOTO,
U.PERSONAL_GENDER, FU.POINTS, FU.HIDE_FROM_ONLINE,
DATE_FORMAT(U.PERSONAL_BIRTHDAY, '%d.%m.%Y') as PERSONAL_BIRTHDAY ,
CASE WHEN (FU.USER_ID > 0 AND FU.SHOW_NAME = 'Y' AND LENGTH(TRIM(CONCAT_WS('',U.NAME,' ',U.LAST_NAME))) > 0) THEN TRIM(REPLACE(CONCAT_WS(' ',U.NAME,' ',U.LAST_NAME), ' ', ' ')) ELSE U.LOGIN END AS SHOW_ABC FROM b_forum_user FU LEFT JOIN b_user U ON (FU.USER_ID = U.ID) WHERE 1 = 1
ORDER BY FU.NUM_POSTS DESC LIMIT 0, 20;
SELECT UG.GROUP_ID FROM b_user_group UG WHERE UG.USER_ID = 1 AND ((UG.DATE_ACTIVE_FROM IS NULL) OR (UG.DATE_ACTIVE_FROM <= now())) AND ((UG.DATE_ACTIVE_TO IS NULL) OR (UG.DATE_ACTIVE_TO >= now())) ;
SELECT TAG
FROM b_cache_tag
WHERE SITE_ID = 's1'
AND CACHE_SALT = '/6b3'
AND RELATIVE_PATH = '/s1/bitrix/menu/345'
;
INSERT IGNORE INTO b_cache_tag (SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG)
VALUES
('s1', '/6b3', '/s1/bitrix/menu/345', 'bitrix:menu');
SELECT
COUNT(ST.ID) as CNT
FROM
b_sticker ST
WHERE
((ST.PERSONAL='Y' AND ST.CREATED_BY=1) OR ST.PERSONAL='N')
AND ST.CLOSED='N' AND ST.DELETED='N' AND ST.SITE_ID='s1'
AND ST.PAGE_URL='/forum/users/';
SET NAMES 'utf8';
SET collation_connection = "utf8_unicode_ci";
SELECT * FROM `b_forum_user` LIMIT 0;
UPDATE b_forum_user SET LAST_VISIT=now() WHERE USER_ID = 1;
UPDATE b_forum_stat SET `USER_ID` = 1, `IP_ADDRESS` = '10.0.70.52', `SHOW_NAME` = 'admin', `LAST_VISIT` = now(), `SITE_ID` = 's1', `FORUM_ID` = 0, `TOPIC_ID` = 0 WHERE PHPSESSID='o50tf3qfh12hfbbfcpis0npeb2';
SELECT COUNT('x') as CNT FROM b_forum_user FU LEFT JOIN b_user U ON (FU.USER_ID = U.ID) WHERE 1 = 1 ;
SELECT FU.ID, U.ID as USER_ID, FU.SHOW_NAME, FU.DESCRIPTION, FU.IP_ADDRESS,
FU.REAL_IP_ADDRESS, FU.AVATAR, FU.NUM_POSTS, FU.POINTS as NUM_POINTS,
FU.INTERESTS, FU.SUBSC_GROUP_MESSAGE, FU.SUBSC_GET_MY_MESSAGE,
FU.LAST_POST, FU.ALLOW_POST, FU.SIGNATURE, FU.RANK_ID,
U.EMAIL, U.NAME, U.SECOND_NAME, U.LAST_NAME, U.LOGIN, U.PERSONAL_BIRTHDATE,
DATE_FORMAT(FU.DATE_REG, '%d.%m.%Y') as DATE_REG,
DATE_FORMAT(FU.LAST_VISIT, '%d.%m.%Y %H:%i:%s') as LAST_VISIT,
DATE_FORMAT(FU.LAST_VISIT, '%d.%m.%Y') as LAST_VISIT_SHORT,
DATE_FORMAT(U.DATE_REGISTER, '%d.%m.%Y') as DATE_REGISTER_SHORT,
U.PERSONAL_ICQ, U.PERSONAL_WWW, U.PERSONAL_PROFESSION, U.DATE_REGISTER,
U.PERSONAL_CITY, U.PERSONAL_COUNTRY, U.PERSONAL_PHOTO,
U.PERSONAL_GENDER, FU.POINTS, FU.HIDE_FROM_ONLINE,
DATE_FORMAT(U.PERSONAL_BIRTHDAY, '%d.%m.%Y') as PERSONAL_BIRTHDAY ,
CASE WHEN (FU.USER_ID > 0 AND FU.SHOW_NAME = 'Y' AND LENGTH(TRIM(CONCAT_WS('',U.NAME,' ',U.LAST_NAME))) > 0) THEN TRIM(REPLACE(CONCAT_WS(' ',U.NAME,' ',U.LAST_NAME), ' ', ' ')) ELSE U.LOGIN END AS SHOW_ABC FROM b_forum_user FU LEFT JOIN b_user U ON (FU.USER_ID = U.ID) WHERE 1 = 1
ORDER BY FU.NUM_POSTS DESC LIMIT 0, 20;
SELECT UG.GROUP_ID FROM b_user_group UG WHERE UG.USER_ID = 1 AND ((UG.DATE_ACTIVE_FROM IS NULL) OR (UG.DATE_ACTIVE_FROM <= now())) AND ((UG.DATE_ACTIVE_TO IS NULL) OR (UG.DATE_ACTIVE_TO >= now())) ;
SET NAMES 'utf8';
SET collation_connection = "utf8_unicode_ci";
SELECT TAG
FROM b_cache_tag
WHERE SITE_ID = 's1'
AND CACHE_SALT = '/f25'
AND RELATIVE_PATH = '/s1/bitrix/menu/06f'
;
INSERT IGNORE INTO b_cache_tag (SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG)
VALUES
('s1', '/f25', '/s1/bitrix/menu/06f', 'bitrix:menu');
SELECT * FROM `b_forum_user` LIMIT 0;
UPDATE b_forum_user SET LAST_VISIT=now() WHERE USER_ID = 1;
UPDATE b_forum_stat SET `USER_ID` = 1, `IP_ADDRESS` = '10.0.70.52', `SHOW_NAME` = 'admin', `LAST_VISIT` = now(), `SITE_ID` = 's1', `FORUM_ID` = 0, `TOPIC_ID` = 0 WHERE PHPSESSID='o50tf3qfh12hfbbfcpis0npeb2';
SELECT U.*, DATE_FORMAT(U.TIMESTAMP_X, '%d.%m.%Y %H:%i:%s') TIMESTAMP_X, IF(U.LAST_ACTIVITY_DATE > DATE_SUB(NOW(), INTERVAL 120 SECOND), 'Y', 'N') IS_ONLINE, DATE_FORMAT(U.DATE_REGISTER, '%d.%m.%Y %H:%i:%s') DATE_REGISTER, DATE_FORMAT(U.LAST_LOGIN, '%d.%m.%Y %H:%i:%s') LAST_LOGIN, DATE_FORMAT(U.PERSONAL_BIRTHDAY, '%d.%m.%Y') PERSONAL_BIRTHDAY
FROM
b_user U
WHERE
(1=1
AND
(
U.ID='1'
)
)
ORDER BY U.ID asc;
SELECT FU.ID, FU.USER_ID, FU.SHOW_NAME, FU.DESCRIPTION, FU.IP_ADDRESS,
FU.REAL_IP_ADDRESS, FU.AVATAR, FU.NUM_POSTS, FU.POINTS as NUM_POINTS,
FU.INTERESTS, FU.HIDE_FROM_ONLINE, FU.SUBSC_GROUP_MESSAGE, FU.SUBSC_GET_MY_MESSAGE,
FU.LAST_POST, FU.ALLOW_POST, FU.SIGNATURE, FU.RANK_ID, FU.POINTS,
DATE_FORMAT(FU.DATE_REG, '%d.%m.%Y') as DATE_REG,
DATE_FORMAT(FU.LAST_VISIT, '%d.%m.%Y %H:%i:%s') as LAST_VISIT
FROM b_forum_user FU
WHERE FU.USER_ID = 1;
SELECT F_FORUM.*, F.NAME, F.DESCRIPTION, F.ACTIVE, F.MODERATION, F.INDEXATION, F.DEDUPLICATION, F.ALLOW_MOVE_TOPIC, '' as LID,
F.TOPICS, F.POSTS, F.LAST_POSTER_ID, F.LAST_POSTER_NAME,
DATE_FORMAT(F.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE,
F.LAST_MESSAGE_ID, F.LAST_MESSAGE_ID as MID,
F.POSTS_UNAPPROVED, F.ABS_LAST_POSTER_ID, F.ABS_LAST_POSTER_NAME,
DATE_FORMAT(F.ABS_LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as ABS_LAST_POST_DATE,
F.ABS_LAST_MESSAGE_ID, F.SORT, F.ORDER_BY,
F.ORDER_DIRECTION, F.ALLOW_HTML, F.ALLOW_ANCHOR, F.ALLOW_BIU,
F.ALLOW_IMG, F.ALLOW_VIDEO, F.ALLOW_TABLE, F.ALLOW_LIST, F.ALLOW_QUOTE, F.ALLOW_CODE,
F.ALLOW_ALIGN, F.ALLOW_FONT, F.ALLOW_SMILES, F.ALLOW_UPLOAD, F.EVENT1, F.EVENT2,
F.EVENT3, F.ALLOW_NL2BR, '' as PATH2FORUM_MESSAGE, F.ALLOW_UPLOAD_EXT, F.ALLOW_TOPIC_TITLED,
F.ALLOW_SIGNATURE,
F.FORUM_GROUP_ID, F.ASK_GUEST_EMAIL, F.USE_CAPTCHA, F.XML_ID
FROM
(
SELECT F.ID
FROM b_forum F
, b_forum2site F2S
WHERE (1=1 AND (F.ID = F2S.FORUM_ID AND (F2S.SITE_ID = 's1' )) AND ((F.ID IN (1, 2))) )
GROUP BY F.ID
) F_FORUM
INNER JOIN b_forum F ON (F_FORUM.ID = F.ID)
;
SELECT UG.GROUP_ID FROM b_user_group UG WHERE UG.USER_ID = 1 AND ((UG.DATE_ACTIVE_FROM IS NULL) OR (UG.DATE_ACTIVE_FROM <= now())) AND ((UG.DATE_ACTIVE_TO IS NULL) OR (UG.DATE_ACTIVE_TO >= now())) ;
SELECT ENTITY_TYPE_ID, ENTITY_ID, PREVIOUS_VALUE, CURRENT_VALUE, PREVIOUS_POSITION, CURRENT_POSITION
FROM b_rating_results
WHERE RATING_ID = '2' AND ENTITY_ID IN (1)
;
SELECT FMM.*, FT.TITLE, FT.DESCRIPTION, FT.VIEWS, FT.LAST_POSTER_ID,
TRIM(BOTH '-' FROM REPLACE(CONCAT_WS('-',FT.ID,FT.TITLE_SEO), '--', '-')) as TITLE_SEO,
DATE_FORMAT(FT.START_DATE, '%d.%m.%Y %H:%i:%s') as START_DATE,
FT.USER_START_NAME, FT.USER_START_ID, FT.POSTS, FT.LAST_POSTER_NAME,
FT.LAST_MESSAGE_ID, '' as IMAGE, '' as IMAGE_DESCR,
FT.APPROVED, FT.STATE, FT.FORUM_ID, FT.ICON, FT.SORT, FT.HTML
FROM
(
SELECT FM.TOPIC_ID, COUNT(FM.ID) AS COUNT_MESSAGE, MIN(FM.ID) AS FIRST_POST, MAX(FM.ID) AS LAST_POST
FROM b_forum_message FM
WHERE 1=1
AND (FM.AUTHOR_ID = (1)) AND (FM.FORUM_ID IN (1,2))
GROUP BY FM.TOPIC_ID
) FMM
LEFT JOIN b_forum_topic FT ON (FT.ID = FMM.TOPIC_ID)
ORDER BY FMM.LAST_POST DESC;
SELECT FM.ID, DATE_FORMAT(FM.POST_DATE, '%d.%m.%Y %H:%i:%s') AS POST_DATE FROM b_forum_message FM WHERE FM.ID=7 OR FM.ID=7;
SELECT TAG
FROM b_cache_tag
WHERE SITE_ID = 's1'
AND CACHE_SALT = '/f25'
AND RELATIVE_PATH = '/s1/bitrix/menu/345'
;
INSERT IGNORE INTO b_cache_tag (SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG)
VALUES
('s1', '/f25', '/s1/bitrix/menu/345', 'bitrix:menu');
SELECT
COUNT(ST.ID) as CNT
FROM
b_sticker ST
WHERE
((ST.PERSONAL='Y' AND ST.CREATED_BY=1) OR ST.PERSONAL='N')
AND ST.CLOSED='N' AND ST.DELETED='N' AND ST.SITE_ID='s1'
AND ST.PAGE_URL='/forum/user/1/';
SET NAMES 'utf8';
SET collation_connection = "utf8_unicode_ci";
SELECT L.*, L.LID as ID, L.LID as LANGUAGE_ID, C.FORMAT_DATE, C.FORMAT_DATETIME, C.FORMAT_NAME, C.WEEK_START, C.CHARSET, C.DIRECTION FROM b_language L, b_culture C WHERE C.ID = L.CULTURE_ID AND (L.LID='ru') AND (L.ACTIVE='Y') ORDER BY L.SORT ;
DELETE FROM b_admin_notify_lang WHERE NOTIFY_ID = 16;
DELETE FROM b_admin_notify WHERE ID = 16;
SELECT L.*, L.LID as ID, L.LID as LANGUAGE_ID, C.FORMAT_DATE, C.FORMAT_DATETIME, C.FORMAT_NAME, C.WEEK_START, C.CHARSET, C.DIRECTION FROM b_language L, b_culture C WHERE C.ID = L.CULTURE_ID ORDER BY L.LID ;
SET NAMES 'utf8';
SET collation_connection = "utf8_unicode_ci";
SELECT TAG
FROM b_cache_tag
WHERE SITE_ID = 's1'
AND CACHE_SALT = '/903'
AND RELATIVE_PATH = '/s1/bitrix/menu/06f'
;
INSERT IGNORE INTO b_cache_tag (SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG)
VALUES
('s1', '/903', '/s1/bitrix/menu/06f', 'bitrix:menu');
SELECT TAG
FROM b_cache_tag
WHERE SITE_ID = 's1'
AND CACHE_SALT = '/903'
AND RELATIVE_PATH = '/s1/bitrix/menu/345'
;
INSERT IGNORE INTO b_cache_tag (SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG)
VALUES
('s1', '/903', '/s1/bitrix/menu/345', 'bitrix:menu');
SELECT
COUNT(ST.ID) as CNT
FROM
b_sticker ST
WHERE
((ST.PERSONAL='Y' AND ST.CREATED_BY=1) OR ST.PERSONAL='N')
AND ST.CLOSED='N' AND ST.DELETED='N' AND ST.SITE_ID='s1'
AND ST.PAGE_URL='/events-calendar/';
SELECT AN.ID, AN.MODULE_ID, AN.TAG, AN.MESSAGE, AN.ENABLE_CLOSE, AN.PUBLIC_SECTION, ANL.MESSAGE as MESSAGE_LANG FROM b_admin_notify AN LEFT JOIN b_admin_notify_lang ANL ON (AN.ID = ANL.NOTIFY_ID AND ANL.LID = 'ru') WHERE (1=1
AND
(
AN.PUBLIC_SECTION='N'
)
) ORDER BY AN.ID DESC;
SET NAMES 'utf8';
SET collation_connection = "utf8_unicode_ci";
SELECT 'x'
FROM b_agent
WHERE
ACTIVE = 'Y'
AND NEXT_EXEC <= now()
AND (DATE_CHECK IS NULL OR DATE_CHECK <= now())
LIMIT 1
;
SELECT GET_LOCK('cff29ec0118154ee0dcf115d29478b29_agent', 0) as L;
SELECT ID, NAME, AGENT_INTERVAL, IS_PERIOD, MODULE_ID FROM b_agent WHERE ACTIVE='Y' AND NEXT_EXEC<=now() AND (DATE_CHECK IS NULL OR DATE_CHECK<=now()) ORDER BY RUNNING ASC, SORT desc;
UPDATE b_agent SET DATE_CHECK=DATE_ADD(IF(DATE_CHECK IS NULL, now(), DATE_CHECK), INTERVAL 600 SECOND) WHERE ID IN (6);
SELECT RELEASE_LOCK('cff29ec0118154ee0dcf115d29478b29_agent');
UPDATE b_agent SET RUNNING='Y' WHERE ID=6;
UPDATE b_agent SET
NAME='\\Bitrix\\Main\\Analytics\\CounterDataTable::submitData();',
LAST_EXEC=now(),
NEXT_EXEC=DATE_ADD(now(), INTERVAL 60 SECOND),
DATE_CHECK=NULL,
RUNNING='N'
WHERE ID=6;
SELECT DISTINCT
B.*
,B.XML_ID as EXTERNAL_ID
,DATE_FORMAT(B.TIMESTAMP_X, '%d.%m.%Y %H:%i:%s') as TIMESTAMP_X
,L.DIR as LANG_DIR
,L.SERVER_NAME
FROM
b_iblock B
INNER JOIN b_lang L ON L.LID=B.LID
WHERE 1 = 1
AND ((((B.ACTIVE='Y')))) AND ((((B.ID = '2'))))
;
SET NAMES 'utf8';
SET collation_connection = "utf8_unicode_ci";
SELECT 'x'
FROM b_agent
WHERE
ACTIVE = 'Y'
AND NEXT_EXEC <= now()
AND (DATE_CHECK IS NULL OR DATE_CHECK <= now())
LIMIT 1
;
SELECT UNIX_TIMESTAMP(MIN(NEXT_EXEC))-UNIX_TIMESTAMP(NOW()) DATE_DIFF FROM b_agent WHERE ACTIVE='Y' ;
DELETE FROM b_admin_notify_lang WHERE NOTIFY_ID IN (SELECT ID FROM b_admin_notify WHERE TAG like '%PHOTOGALLERY_UPLOADER%');
DELETE FROM b_admin_notify WHERE TAG like '%PHOTOGALLERY_UPLOADER%';
SELECT L.*, L.LID as ID, L.LID as LANGUAGE_ID, C.FORMAT_DATE, C.FORMAT_DATETIME, C.FORMAT_NAME, C.WEEK_START, C.CHARSET, C.DIRECTION FROM b_language L, b_culture C WHERE C.ID = L.CULTURE_ID ORDER BY L.LID ;
SELECT * FROM `b_admin_notify` LIMIT 0;
SELECT L.*, L.LID as ID, L.LID as LANGUAGE_ID, C.FORMAT_DATE, C.FORMAT_DATETIME, C.FORMAT_NAME, C.WEEK_START, C.CHARSET, C.DIRECTION FROM b_language L, b_culture C WHERE C.ID = L.CULTURE_ID ORDER BY L.LID ;
SELECT BE.ID as ID,BE.IBLOCK_ID as IBLOCK_ID,BE.ACTIVE as ACTIVE
FROM
b_iblock B
INNER JOIN b_lang L ON B.LID=L.LID
INNER JOIN b_iblock_element BE ON BE.IBLOCK_ID = B.ID
WHERE 1=1
AND (
((((BE.IBLOCK_ID = '9'))))
AND ((( BE.ACTIVE IS NULL OR NOT (BE.ACTIVE='Y'))))
)
AND (((BE.WF_STATUS_ID=1 AND BE.WF_PARENT_ELEMENT_ID IS NULL)))
LIMIT 1;
SELECT AN.ID, AN.MODULE_ID, AN.TAG, AN.MESSAGE, AN.ENABLE_CLOSE, AN.PUBLIC_SECTION, ANL.MESSAGE as MESSAGE_LANG FROM b_admin_notify AN LEFT JOIN b_admin_notify_lang ANL ON (AN.ID = ANL.NOTIFY_ID AND ANL.LID = 'ru') WHERE (1=1
AND
(
AN.PUBLIC_SECTION='N'
)
) ORDER BY AN.ID DESC;
SET NAMES 'utf8';
SET collation_connection = "utf8_unicode_ci";
DELETE FROM b_admin_notify_lang WHERE NOTIFY_ID IN (SELECT ID FROM b_admin_notify WHERE TAG like '%PHOTOGALLERY_UPLOADER%');
DELETE FROM b_admin_notify WHERE TAG like '%PHOTOGALLERY_UPLOADER%';
SELECT L.*, L.LID as ID, L.LID as LANGUAGE_ID, C.FORMAT_DATE, C.FORMAT_DATETIME, C.FORMAT_NAME, C.WEEK_START, C.CHARSET, C.DIRECTION FROM b_language L, b_culture C WHERE C.ID = L.CULTURE_ID ORDER BY L.LID ;
SELECT * FROM `b_admin_notify` LIMIT 0;
SELECT L.*, L.LID as ID, L.LID as LANGUAGE_ID, C.FORMAT_DATE, C.FORMAT_DATETIME, C.FORMAT_NAME, C.WEEK_START, C.CHARSET, C.DIRECTION FROM b_language L, b_culture C WHERE C.ID = L.CULTURE_ID ORDER BY L.LID ;
SET NAMES 'utf8';
SET collation_connection = "utf8_unicode_ci";
SELECT L.*, BS.* FROM b_iblock_site BS, b_lang L WHERE L.LID=BS.SITE_ID AND BS.IBLOCK_ID=9;
INSERT INTO b_cache_tag (SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG) VALUES ('*', '*', '/bitrix/cache/photogallery.~853832', '*');
SELECT A.ID, A.MODULE_ID, A.USER_ID, B.LOGIN, B.NAME as USER_NAME, B.LAST_NAME, A.SORT, A.NAME, A.ACTIVE, DATE_FORMAT(A.LAST_EXEC, '%d.%m.%Y %H:%i:%s') as LAST_EXEC, DATE_FORMAT(A.NEXT_EXEC, '%d.%m.%Y %H:%i:%s') as NEXT_EXEC, A.AGENT_INTERVAL, A.IS_PERIOD FROM b_agent A LEFT JOIN b_user B ON(A.USER_ID = B.ID) WHERE A.NAME LIKE '\\\\Bitrix\\\\Main\\\\Data\\\\CacheEngineFiles::delayedDelete(%' ORDER BY A.ID DESC;
SELECT ID
FROM b_agent
WHERE NAME = '\\Bitrix\\Main\\Data\\CacheEngineFiles::delayedDelete();'
AND USER_ID IS NULL;
INSERT INTO b_cache_tag (SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG) VALUES ('*', '*', '/bitrix/managed_cache/MYSQL/agents.~53033', '*');
SELECT * FROM `b_agent` LIMIT 0;
INSERT INTO b_agent(`MODULE_ID`, `SORT`, `NAME`, `ACTIVE`, `NEXT_EXEC`, `AGENT_INTERVAL`, `IS_PERIOD`, `USER_ID`) VALUES('main', '100', '\\Bitrix\\Main\\Data\\CacheEngineFiles::delayedDelete();', 'Y', CURRENT_DATE, '1', 'Y', NULL );
INSERT INTO b_cache_tag (SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG) VALUES ('*', '*', '/bitrix/cache/s1/photogallery.~194981', '*');
SET NAMES 'utf8';
SET collation_connection = "utf8_unicode_ci";
SELECT L.*, BS.* FROM b_iblock_site BS, b_lang L WHERE L.LID=BS.SITE_ID AND BS.IBLOCK_ID=9;
SET NAMES 'utf8';
SET collation_connection = "utf8_unicode_ci";
SELECT L.*, BS.* FROM b_iblock_site BS, b_lang L WHERE L.LID=BS.SITE_ID AND BS.IBLOCK_ID=9;
SET NAMES 'utf8';
SET collation_connection = "utf8_unicode_ci";
SELECT BP.*
FROM b_iblock_property BP
WHERE BP.ACTIVE = 'Y'
AND BP.VERSION = 2
AND BP.IBLOCK_ID = 9
ORDER BY BP.SORT ASC
;
SELECT BE.ID as ID,BE.IBLOCK_ID as IBLOCK_ID
FROM
b_iblock B
INNER JOIN b_lang L ON B.LID=L.LID
INNER JOIN b_iblock_element BE ON BE.IBLOCK_ID = B.ID
WHERE 1=1
AND (
((((BE.ID = '110'))))
AND ((((B.ACTIVE='Y'))))
AND ((((BE.IBLOCK_ID = '9'))))
)
AND (((BE.WF_STATUS_ID=1 AND BE.WF_PARENT_ELEMENT_ID IS NULL)))
;
SELECT BP.*, BEP.ID as PROPERTY_VALUE_ID, BEP.VALUE, BEP.DESCRIPTION, BEPE.VALUE VALUE_ENUM, BEPE.XML_ID VALUE_XML_ID, BEPE.SORT VALUE_SORT
FROM b_iblock B
INNER JOIN b_iblock_property BP ON B.ID=BP.IBLOCK_ID
LEFT JOIN b_iblock_element_property BEP ON (BP.ID = BEP.IBLOCK_PROPERTY_ID AND BEP.IBLOCK_ELEMENT_ID = 110)
LEFT JOIN b_iblock_property_enum BEPE ON (BP.PROPERTY_TYPE = 'L' AND BEPE.ID=BEP.VALUE_ENUM AND BEPE.PROPERTY_ID=BP.ID)
WHERE B.ID = 9
AND BP.ACTIVE='Y'
ORDER BY BP.SORT asc, BP.ID asc, BEPE.SORT asc, BEP.ID asc;
SELECT TAG
FROM b_cache_tag
WHERE SITE_ID = 's1'
AND CACHE_SALT = '/c3f'
AND RELATIVE_PATH = '/s1/bitrix/iblock.vote/cd2'
;
UPDATE b_iblock_element SET TIMESTAMP_X = TIMESTAMP_X, SHOW_COUNTER_START = ifnull(SHOW_COUNTER_START, now()), SHOW_COUNTER = ifnull(SHOW_COUNTER, 0) + 1 WHERE ID=110;
SELECT L.*, BS.* FROM b_iblock_site BS, b_lang L WHERE L.LID=BS.SITE_ID AND BS.IBLOCK_ID=9;
SET NAMES 'utf8';
SET collation_connection = "utf8_unicode_ci";
SELECT BP.*
FROM b_iblock_property BP
WHERE BP.ACTIVE = 'Y'
AND BP.VERSION = 2
AND BP.IBLOCK_ID = 9
ORDER BY BP.SORT ASC
;
SELECT BE.ID as ID,BE.IBLOCK_ID as IBLOCK_ID
FROM
b_iblock B
INNER JOIN b_lang L ON B.LID=L.LID
INNER JOIN b_iblock_element BE ON BE.IBLOCK_ID = B.ID
WHERE 1=1
AND (
((((BE.ID = '111'))))
AND ((((B.ACTIVE='Y'))))
AND ((((BE.IBLOCK_ID = '9'))))
)
AND (((BE.WF_STATUS_ID=1 AND BE.WF_PARENT_ELEMENT_ID IS NULL)))
;
SELECT BP.*, BEP.ID as PROPERTY_VALUE_ID, BEP.VALUE, BEP.DESCRIPTION, BEPE.VALUE VALUE_ENUM, BEPE.XML_ID VALUE_XML_ID, BEPE.SORT VALUE_SORT
FROM b_iblock B
INNER JOIN b_iblock_property BP ON B.ID=BP.IBLOCK_ID
LEFT JOIN b_iblock_element_property BEP ON (BP.ID = BEP.IBLOCK_PROPERTY_ID AND BEP.IBLOCK_ELEMENT_ID = 111)
LEFT JOIN b_iblock_property_enum BEPE ON (BP.PROPERTY_TYPE = 'L' AND BEPE.ID=BEP.VALUE_ENUM AND BEPE.PROPERTY_ID=BP.ID)
WHERE B.ID = 9
AND BP.ACTIVE='Y'
ORDER BY BP.SORT asc, BP.ID asc, BEPE.SORT asc, BEP.ID asc;
SELECT TAG
FROM b_cache_tag
WHERE SITE_ID = 's1'
AND CACHE_SALT = '/c3f'
AND RELATIVE_PATH = '/s1/bitrix/iblock.vote/cd2'
;
UPDATE b_iblock_element SET TIMESTAMP_X = TIMESTAMP_X, SHOW_COUNTER_START = ifnull(SHOW_COUNTER_START, now()), SHOW_COUNTER = ifnull(SHOW_COUNTER, 0) + 1 WHERE ID=111;
SELECT L.*, BS.* FROM b_iblock_site BS, b_lang L WHERE L.LID=BS.SITE_ID AND BS.IBLOCK_ID=9;
SET NAMES 'utf8';
SET collation_connection = "utf8_unicode_ci";
SELECT 'x'
FROM b_agent
WHERE
ACTIVE = 'Y'
AND NEXT_EXEC <= now()
AND (DATE_CHECK IS NULL OR DATE_CHECK <= now())
LIMIT 1
;
SELECT GET_LOCK('cff29ec0118154ee0dcf115d29478b29_agent', 0) as L;
SELECT ID, NAME, AGENT_INTERVAL, IS_PERIOD, MODULE_ID FROM b_agent WHERE ACTIVE='Y' AND NEXT_EXEC<=now() AND (DATE_CHECK IS NULL OR DATE_CHECK<=now()) ORDER BY RUNNING ASC, SORT desc;
UPDATE b_agent SET DATE_CHECK=DATE_ADD(IF(DATE_CHECK IS NULL, now(), DATE_CHECK), INTERVAL 600 SECOND) WHERE ID IN (20);
SELECT RELEASE_LOCK('cff29ec0118154ee0dcf115d29478b29_agent');
UPDATE b_agent SET RUNNING='Y' WHERE ID=20;
SELECT SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG from b_cache_tag WHERE TAG='*'
LIMIT 0, 1;
SELECT SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG from b_cache_tag WHERE TAG='**';
SELECT count(1) CNT from b_cache_tag WHERE TAG='*'
LIMIT 0, 1;
UPDATE b_cache_tag SET RELATIVE_PATH='3:1469352763' WHERE TAG='**';
UPDATE b_agent SET
NAME='\\Bitrix\\Main\\Data\\CacheEngineFiles::delayedDelete(1);',
LAST_EXEC=now(),
NEXT_EXEC=DATE_ADD(NEXT_EXEC, INTERVAL 1 SECOND),
DATE_CHECK=NULL,
RUNNING='N'
WHERE ID=20;
SELECT B.ID, B.USER_ID, B.ALIAS, B.DESCRIPTION, B.AVATAR, B.INTERESTS, B.ALLOW_POST, DATE_FORMAT(B.LAST_VISIT, '%d.%m.%Y %H:%i:%s') as LAST_VISIT, DATE_FORMAT(B.DATE_REG, '%d.%m.%Y %H:%i:%s') as DATE_REG FROM b_blog_user B WHERE B.USER_ID = 1;
SELECT * FROM `b_blog_user` LIMIT 0;
UPDATE b_blog_user SET LAST_VISIT=now() WHERE ID = 1 ;
SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, DATE_FORMAT(B.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(B.DATE_UPDATE, '%d.%m.%Y %H:%i:%s') as DATE_UPDATE, DATE_FORMAT(B.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE FROM b_blog B WHERE B.OWNER_ID = 1 AND B.GROUP_ID IN (1);
SELECT B.ID, B.USER_ID, B.ALIAS, B.DESCRIPTION, B.AVATAR, B.INTERESTS, B.ALLOW_POST, DATE_FORMAT(B.LAST_VISIT, '%d.%m.%Y %H:%i:%s') as LAST_VISIT, DATE_FORMAT(B.DATE_REG, '%d.%m.%Y %H:%i:%s') as DATE_REG FROM b_blog_user B WHERE B.USER_ID = 1;
SELECT UG.GROUP_ID FROM b_user_group UG WHERE UG.USER_ID = 1 AND ((UG.DATE_ACTIVE_FROM IS NULL) OR (UG.DATE_ACTIVE_FROM <= now())) AND ((UG.DATE_ACTIVE_TO IS NULL) OR (UG.DATE_ACTIVE_TO >= now())) ;
SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, DATE_FORMAT(B.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(B.DATE_UPDATE, '%d.%m.%Y %H:%i:%s') as DATE_UPDATE, DATE_FORMAT(B.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE FROM b_blog B WHERE B.OWNER_ID = 1 AND B.GROUP_ID IN (1);
SELECT AN.ID, AN.MODULE_ID, AN.TAG, AN.MESSAGE, AN.ENABLE_CLOSE, AN.PUBLIC_SECTION, ANL.MESSAGE as MESSAGE_LANG FROM b_admin_notify AN LEFT JOIN b_admin_notify_lang ANL ON (AN.ID = ANL.NOTIFY_ID AND ANL.LID = 'ru') WHERE (1=1
AND
(
AN.PUBLIC_SECTION='N'
)
) ORDER BY AN.ID DESC;
SET NAMES 'utf8';
SET collation_connection = "utf8_unicode_ci";
SELECT 'x'
FROM b_agent
WHERE
ACTIVE = 'Y'
AND NEXT_EXEC <= now()
AND (DATE_CHECK IS NULL OR DATE_CHECK <= now())
LIMIT 1
;
SELECT GET_LOCK('cff29ec0118154ee0dcf115d29478b29_agent', 0) as L;
SELECT ID, NAME, AGENT_INTERVAL, IS_PERIOD, MODULE_ID FROM b_agent WHERE ACTIVE='Y' AND NEXT_EXEC<=now() AND (DATE_CHECK IS NULL OR DATE_CHECK<=now()) ORDER BY RUNNING ASC, SORT desc;
UPDATE b_agent SET DATE_CHECK=DATE_ADD(IF(DATE_CHECK IS NULL, now(), DATE_CHECK), INTERVAL 600 SECOND) WHERE ID IN (20);
SELECT RELEASE_LOCK('cff29ec0118154ee0dcf115d29478b29_agent');
UPDATE b_agent SET RUNNING='Y' WHERE ID=20;
SELECT SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG from b_cache_tag WHERE TAG='*'
LIMIT 0, 1;
DELETE FROM b_cache_tag
WHERE SITE_ID = '*'
AND CACHE_SALT = '*'
AND RELATIVE_PATH = '/bitrix/cache/photogallery.~853832';
SELECT SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG from b_cache_tag WHERE TAG='**';
SELECT count(1) CNT from b_cache_tag WHERE TAG='*'
LIMIT 0, 1;
UPDATE b_cache_tag SET RELATIVE_PATH='2:1469352770' WHERE TAG='**';
UPDATE b_agent SET
NAME='\\Bitrix\\Main\\Data\\CacheEngineFiles::delayedDelete(1);',
LAST_EXEC=now(),
NEXT_EXEC=DATE_ADD(NEXT_EXEC, INTERVAL 1 SECOND),
DATE_CHECK=NULL,
RUNNING='N'
WHERE ID=20;
SELECT B.ID, B.USER_ID, B.ALIAS, B.DESCRIPTION, B.AVATAR, B.INTERESTS, B.ALLOW_POST, DATE_FORMAT(B.LAST_VISIT, '%d.%m.%Y %H:%i:%s') as LAST_VISIT, DATE_FORMAT(B.DATE_REG, '%d.%m.%Y %H:%i:%s') as DATE_REG FROM b_blog_user B WHERE B.USER_ID = 1;
SELECT * FROM `b_blog_user` LIMIT 0;
UPDATE b_blog_user SET LAST_VISIT=now() WHERE ID = 1 ;
SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, DATE_FORMAT(B.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(B.DATE_UPDATE, '%d.%m.%Y %H:%i:%s') as DATE_UPDATE, DATE_FORMAT(B.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE FROM b_blog B WHERE B.OWNER_ID = 1 AND B.GROUP_ID IN (1);
SELECT B.ID, B.USER_ID, B.ALIAS, B.DESCRIPTION, B.AVATAR, B.INTERESTS, B.ALLOW_POST, DATE_FORMAT(B.LAST_VISIT, '%d.%m.%Y %H:%i:%s') as LAST_VISIT, DATE_FORMAT(B.DATE_REG, '%d.%m.%Y %H:%i:%s') as DATE_REG FROM b_blog_user B WHERE B.USER_ID = 1;
SELECT UG.GROUP_ID FROM b_user_group UG WHERE UG.USER_ID = 1 AND ((UG.DATE_ACTIVE_FROM IS NULL) OR (UG.DATE_ACTIVE_FROM <= now())) AND ((UG.DATE_ACTIVE_TO IS NULL) OR (UG.DATE_ACTIVE_TO >= now())) ;
SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, DATE_FORMAT(B.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(B.DATE_UPDATE, '%d.%m.%Y %H:%i:%s') as DATE_UPDATE, DATE_FORMAT(B.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE FROM b_blog B WHERE B.OWNER_ID = 1 AND B.GROUP_ID IN (1);
SET NAMES 'utf8';
SET collation_connection = "utf8_unicode_ci";
SELECT 'x'
FROM b_agent
WHERE
ACTIVE = 'Y'
AND NEXT_EXEC <= now()
AND (DATE_CHECK IS NULL OR DATE_CHECK <= now())
LIMIT 1
;
SELECT GET_LOCK('cff29ec0118154ee0dcf115d29478b29_agent', 0) as L;
SELECT ID, NAME, AGENT_INTERVAL, IS_PERIOD, MODULE_ID FROM b_agent WHERE ACTIVE='Y' AND NEXT_EXEC<=now() AND (DATE_CHECK IS NULL OR DATE_CHECK<=now()) ORDER BY RUNNING ASC, SORT desc;
UPDATE b_agent SET DATE_CHECK=DATE_ADD(IF(DATE_CHECK IS NULL, now(), DATE_CHECK), INTERVAL 600 SECOND) WHERE ID IN (20);
SELECT RELEASE_LOCK('cff29ec0118154ee0dcf115d29478b29_agent');
UPDATE b_agent SET RUNNING='Y' WHERE ID=20;
SELECT SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG from b_cache_tag WHERE TAG='*'
LIMIT 0, 1;
SELECT SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG from b_cache_tag WHERE TAG='**';
SELECT count(1) CNT from b_cache_tag WHERE TAG='*'
LIMIT 0, 1;
UPDATE b_agent SET
NAME='\\Bitrix\\Main\\Data\\CacheEngineFiles::delayedDelete(1);',
LAST_EXEC=now(),
NEXT_EXEC=DATE_ADD(NEXT_EXEC, INTERVAL 1 SECOND),
DATE_CHECK=NULL,
RUNNING='N'
WHERE ID=20;
SELECT B.ID, B.USER_ID, B.ALIAS, B.DESCRIPTION, B.AVATAR, B.INTERESTS, B.ALLOW_POST, DATE_FORMAT(B.LAST_VISIT, '%d.%m.%Y %H:%i:%s') as LAST_VISIT, DATE_FORMAT(B.DATE_REG, '%d.%m.%Y %H:%i:%s') as DATE_REG FROM b_blog_user B WHERE B.USER_ID = 1;
SELECT * FROM `b_blog_user` LIMIT 0;
UPDATE b_blog_user SET LAST_VISIT=now() WHERE ID = 1 ;
SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, DATE_FORMAT(B.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(B.DATE_UPDATE, '%d.%m.%Y %H:%i:%s') as DATE_UPDATE, DATE_FORMAT(B.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE FROM b_blog B WHERE B.OWNER_ID = 1 AND B.GROUP_ID IN (1);
SELECT B.ID, B.USER_ID, B.ALIAS, B.DESCRIPTION, B.AVATAR, B.INTERESTS, B.ALLOW_POST, DATE_FORMAT(B.LAST_VISIT, '%d.%m.%Y %H:%i:%s') as LAST_VISIT, DATE_FORMAT(B.DATE_REG, '%d.%m.%Y %H:%i:%s') as DATE_REG FROM b_blog_user B WHERE B.USER_ID = 1;
SELECT UG.GROUP_ID FROM b_user_group UG WHERE UG.USER_ID = 1 AND ((UG.DATE_ACTIVE_FROM IS NULL) OR (UG.DATE_ACTIVE_FROM <= now())) AND ((UG.DATE_ACTIVE_TO IS NULL) OR (UG.DATE_ACTIVE_TO >= now())) ;
SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, DATE_FORMAT(B.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(B.DATE_UPDATE, '%d.%m.%Y %H:%i:%s') as DATE_UPDATE, DATE_FORMAT(B.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE FROM b_blog B WHERE B.OWNER_ID = 1 AND B.GROUP_ID IN (1);
SET NAMES 'utf8';
SET collation_connection = "utf8_unicode_ci";
SELECT 'x'
FROM b_agent
WHERE
ACTIVE = 'Y'
AND NEXT_EXEC <= now()
AND (DATE_CHECK IS NULL OR DATE_CHECK <= now())
LIMIT 1
;
SELECT GET_LOCK('cff29ec0118154ee0dcf115d29478b29_agent', 0) as L;
SELECT ID, NAME, AGENT_INTERVAL, IS_PERIOD, MODULE_ID FROM b_agent WHERE ACTIVE='Y' AND NEXT_EXEC<=now() AND (DATE_CHECK IS NULL OR DATE_CHECK<=now()) ORDER BY RUNNING ASC, SORT desc;
UPDATE b_agent SET DATE_CHECK=DATE_ADD(IF(DATE_CHECK IS NULL, now(), DATE_CHECK), INTERVAL 600 SECOND) WHERE ID IN (20);
SELECT RELEASE_LOCK('cff29ec0118154ee0dcf115d29478b29_agent');
UPDATE b_agent SET RUNNING='Y' WHERE ID=20;
SELECT SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG from b_cache_tag WHERE TAG='*'
LIMIT 0, 1;
DELETE FROM b_cache_tag
WHERE SITE_ID = '*'
AND CACHE_SALT = '*'
AND RELATIVE_PATH = '/bitrix/managed_cache/MYSQL/agents.~53033';
SELECT SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG from b_cache_tag WHERE TAG='**';
SELECT count(1) CNT from b_cache_tag WHERE TAG='*'
LIMIT 0, 1;
UPDATE b_cache_tag SET RELATIVE_PATH='1:1469352782' WHERE TAG='**';
UPDATE b_agent SET
NAME='\\Bitrix\\Main\\Data\\CacheEngineFiles::delayedDelete(1);',
LAST_EXEC=now(),
NEXT_EXEC=DATE_ADD(NEXT_EXEC, INTERVAL 1 SECOND),
DATE_CHECK=NULL,
RUNNING='N'
WHERE ID=20;
SELECT TAG
FROM b_cache_tag
WHERE SITE_ID = 's1'
AND CACHE_SALT = '/f20'
AND RELATIVE_PATH = '/s1/bitrix/menu/06f'
;
INSERT IGNORE INTO b_cache_tag (SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG)
VALUES
('s1', '/f20', '/s1/bitrix/menu/06f', 'bitrix:menu');
SELECT B.ID, B.USER_ID, B.ALIAS, B.DESCRIPTION, B.AVATAR, B.INTERESTS, B.ALLOW_POST, DATE_FORMAT(B.LAST_VISIT, '%d.%m.%Y %H:%i:%s') as LAST_VISIT, DATE_FORMAT(B.DATE_REG, '%d.%m.%Y %H:%i:%s') as DATE_REG FROM b_blog_user B WHERE B.USER_ID = 1;
SELECT * FROM `b_blog_user` LIMIT 0;
UPDATE b_blog_user SET LAST_VISIT=now() WHERE ID = 1 ;
SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, DATE_FORMAT(B.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(B.DATE_UPDATE, '%d.%m.%Y %H:%i:%s') as DATE_UPDATE, DATE_FORMAT(B.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE FROM b_blog B WHERE B.OWNER_ID = 1 AND B.GROUP_ID IN (1);
SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, DATE_FORMAT(B.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(B.DATE_UPDATE, '%d.%m.%Y %H:%i:%s') as DATE_UPDATE, DATE_FORMAT(B.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE FROM b_blog B WHERE B.URL = 's1_blog_3' AND B.GROUP_ID IN (1);
SELECT G.ID, G.NAME, G.SITE_ID FROM b_blog_group G WHERE G.ID = 1;
SELECT COUNT(P.ID) as ID FROM b_blog_post P WHERE ((((P.BLOG_ID = 2 )))) AND ((((P.PUBLISH_STATUS = 'K' )))) ;
SELECT COUNT(P.ID) as ID FROM b_blog_post P WHERE ((((P.BLOG_ID = 2 )))) AND ((((P.PUBLISH_STATUS = 'D' )))) AND ((((P.AUTHOR_ID = 1 )))) ;
SELECT COUNT( B.ID) as CNT FROM b_blog_user B INNER JOIN b_blog_user2user_group U2UG ON (B.USER_ID = U2UG.USER_ID) WHERE ((((B.USER_ID = 1 )))) AND ((((U2UG.BLOG_ID = 2 )))) ;
SELECT B.ID, B.USER_ID, B.ALIAS, B.DESCRIPTION, B.AVATAR, B.INTERESTS, B.ALLOW_POST, DATE_FORMAT(B.LAST_VISIT, '%d.%m.%Y %H:%i:%s') as LAST_VISIT, DATE_FORMAT(B.DATE_REG, '%d.%m.%Y %H:%i:%s') as DATE_REG FROM b_blog_user B WHERE B.USER_ID = 3;
SELECT U.*, DATE_FORMAT(U.TIMESTAMP_X, '%d.%m.%Y %H:%i:%s') TIMESTAMP_X, IF(U.LAST_ACTIVITY_DATE > DATE_SUB(NOW(), INTERVAL 120 SECOND), 'Y', 'N') IS_ONLINE, DATE_FORMAT(U.DATE_REGISTER, '%d.%m.%Y %H:%i:%s') DATE_REGISTER, DATE_FORMAT(U.LAST_LOGIN, '%d.%m.%Y %H:%i:%s') LAST_LOGIN, DATE_FORMAT(U.PERSONAL_BIRTHDAY, '%d.%m.%Y') PERSONAL_BIRTHDAY
FROM
b_user U
WHERE
(1=1
AND
(
U.ID='3'
)
)
ORDER BY U.ID asc;
SELECT C.CATEGORY_ID as CATEGORY_ID, CC.NAME as NAME, COUNT( C.ID) as CNT FROM b_blog_post_category C LEFT JOIN b_blog_category CC ON (CC.ID = C.CATEGORY_ID) INNER JOIN b_blog_post P ON (P.ID = C.POST_ID) WHERE ((((C.BLOG_ID = 2 )))) AND ((((P.PUBLISH_STATUS = 'P' )))) GROUP BY C.CATEGORY_ID, CC.NAME ORDER BY CC.NAME ASC ;
SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, DATE_FORMAT(B.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(B.DATE_UPDATE, '%d.%m.%Y %H:%i:%s') as DATE_UPDATE, DATE_FORMAT(B.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE FROM b_blog B WHERE B.OWNER_ID = 1 AND B.GROUP_ID IN (1);
SELECT COUNT(P.ID) as ID FROM b_blog_post P WHERE ((((P.BLOG_ID = 2 )))) AND ((((P.PUBLISH_STATUS = 'K' )))) ;
SELECT COUNT(P.ID) as ID FROM b_blog_post P WHERE ((((P.BLOG_ID = 2 )))) AND ((((P.PUBLISH_STATUS = 'D' )))) AND ((((P.AUTHOR_ID = 1 )))) ;
SELECT COUNT( B.ID) as CNT FROM b_blog_user B INNER JOIN b_blog_user2user_group U2UG ON (B.USER_ID = U2UG.USER_ID) WHERE ((((B.USER_ID = 1 )))) AND ((((U2UG.BLOG_ID = 2 )))) ;
SELECT UG.ID, UG.USER_ID, UG.BLOG_ID, UG.USER_GROUP_ID FROM b_blog_user2user_group UG WHERE UG.USER_ID = 1 AND UG.BLOG_ID = 0 ;
SELECT DATE_FORMAT(P.DATE_PUBLISH, '%d.%m.%Y %H:%i:%s') as DATE_PUBLISH, P.ID as ID FROM b_blog_post P WHERE ((((P.BLOG_ID = 2 )))) AND ((((P.PUBLISH_STATUS = 'P' )))) ORDER BY P.DATE_PUBLISH ASC LIMIT 1;
SELECT DATE_FORMAT(P.DATE_PUBLISH, '%Y-%m-%d') as DATE_PUBLISH1, COUNT(P.ID) as CNT FROM b_blog_post P WHERE P.BLOG_ID = 2 AND P.DATE_PUBLISH >= '2016-07-01' AND P.DATE_PUBLISH < '2016-08-01' AND P.PUBLISH_STATUS = 'P' GROUP BY DATE_PUBLISH1 ORDER BY DATE_PUBLISH1 ;
SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, DATE_FORMAT(B.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(B.DATE_UPDATE, '%d.%m.%Y %H:%i:%s') as DATE_UPDATE, DATE_FORMAT(B.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE FROM b_blog B WHERE B.URL = 's1_blog_3' ;
SELECT
stags2.NAME
,COUNT(DISTINCT stags2.SEARCH_CONTENT_ID) as CNT
,MAX(sc.DATE_CHANGE) DC_TMP
,DATE_FORMAT(MAX(sc.DATE_CHANGE), '%d.%m.%Y %H:%i:%s') as FULL_DATE_CHANGE
,DATE_FORMAT(MAX(sc.DATE_CHANGE), '%d.%m.%Y') as DATE_CHANGE
FROM b_search_tags stags2
INNER JOIN b_search_content sc ON (stags2.SEARCH_CONTENT_ID=sc.ID)
INNER JOIN b_search_content_site scsite ON (sc.ID=scsite.SEARCH_CONTENT_ID AND stags2.SITE_ID=scsite.SITE_ID)
WHERE
((1=1))
AND (1=1)
AND (
(
scsite.SITE_ID = 's1'
AND (
(
(sc.DATE_FROM IS NULL)
OR sc.DATE_FROM <= '2016-07-24 12:33:02'
)
AND (
(sc.DATE_TO IS NULL)
OR sc.DATE_TO >= '2016-07-24 12:33:02'
)
))
AND(
(
sc.MODULE_ID = 'blog'
AND sc.PARAM1 = 'POST'
AND sc.PARAM2 = '2'
))
)
GROUP BY
stags2.NAME
ORDER BY CNT DESC
LIMIT 30;
SELECT TAG
FROM b_cache_tag
WHERE SITE_ID = 's1'
AND CACHE_SALT = '/f20'
AND RELATIVE_PATH = '/s1/bitrix/search.tags.cloud/f20'
;
INSERT IGNORE INTO b_cache_tag (SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG)
VALUES
('s1', '/f20', '/s1/bitrix/search.tags.cloud/f20', 'bitrix:search.tags.cloud');
SELECT UG.ID, UG.USER_ID, UG.BLOG_ID, UG.USER_GROUP_ID FROM b_blog_user2user_group UG INNER JOIN b_blog B ON (UG.BLOG_ID = B.ID AND B.URL='s1_blog_3') WHERE UG.USER_ID = 1 ;
SELECT P.FAVORITE_SORT as FAVORITE_SORT, DATE_FORMAT(P.DATE_PUBLISH, '%d.%m.%Y %H:%i:%s') as DATE_PUBLISH, P.ID as ID, MAX('W') as PERMS, COUNT( P.ID) as CNT FROM b_blog_post P WHERE ((((P.PUBLISH_STATUS = 'P' )))) AND (((('W' > 'D' )))) AND ((((P.BLOG_ID = 2 )))) AND ((((P.FAVORITE_SORT > 0 )))) GROUP BY P.FAVORITE_SORT, P.DATE_PUBLISH, P.ID ORDER BY P.FAVORITE_SORT ASC, P.DATE_PUBLISH DESC LIMIT 25;
SELECT COUNT(DISTINCT P.ID) as CNT FROM b_blog_post P WHERE ((((P.PUBLISH_STATUS = 'P' )))) AND (((('W' > 'D' )))) AND ((((P.BLOG_ID = 2 )))) AND ((((P.DATE_PUBLISH <= '2016-07-24 12:33:02')))) GROUP BY P.DATE_PUBLISH, P.ID ;
SELECT DATE_FORMAT(P.DATE_PUBLISH, '%d.%m.%Y %H:%i:%s') as DATE_PUBLISH, P.ID as ID, MAX('W') as PERMS, COUNT( P.ID) as CNT FROM b_blog_post P WHERE ((((P.PUBLISH_STATUS = 'P' )))) AND (((('W' > 'D' )))) AND ((((P.BLOG_ID = 2 )))) AND ((((P.DATE_PUBLISH <= '2016-07-24 12:33:02')))) GROUP BY P.DATE_PUBLISH, P.ID ORDER BY P.DATE_PUBLISH DESC, P.ID DESC LIMIT 0, 27;
SELECT P.*, IF(P.DATE_PUBLISH <= NOW(), 'Y', 'N') as DATE_PUBLISHED, DATE_FORMAT(P.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(P.DATE_PUBLISH, '%d.%m.%Y %H:%i:%s') as DATE_PUBLISH FROM b_blog_post P WHERE P.ID = 3;
SELECT G.ID as ID, G.FILE_ID as FILE_ID, G.POST_ID as POST_ID, G.BLOG_ID as BLOG_ID, G.USER_ID as USER_ID, G.TITLE as TITLE, DATE_FORMAT(G.TIMESTAMP_X, '%d.%m.%Y %H:%i:%s') as TIMESTAMP_X, G.IMAGE_SIZE as IMAGE_SIZE FROM b_blog_image G WHERE ((((G.POST_ID = 3 )))) AND ((((G.BLOG_ID = 2 )))) AND ((((G.IS_COMMENT = 'N' )))) ORDER BY G.ID ASC ;
SELECT G.* FROM b_blog_image G WHERE G.ID = 4;
SELECT B.ID, B.USER_ID, B.ALIAS, B.DESCRIPTION, B.AVATAR, B.INTERESTS, B.ALLOW_POST, DATE_FORMAT(B.LAST_VISIT, '%d.%m.%Y %H:%i:%s') as LAST_VISIT, DATE_FORMAT(B.DATE_REG, '%d.%m.%Y %H:%i:%s') as DATE_REG FROM b_blog_user B WHERE B.USER_ID = 3;
SELECT U.*, DATE_FORMAT(U.TIMESTAMP_X, '%d.%m.%Y %H:%i:%s') TIMESTAMP_X, IF(U.LAST_ACTIVITY_DATE > DATE_SUB(NOW(), INTERVAL 120 SECOND), 'Y', 'N') IS_ONLINE, DATE_FORMAT(U.DATE_REGISTER, '%d.%m.%Y %H:%i:%s') DATE_REGISTER, DATE_FORMAT(U.LAST_LOGIN, '%d.%m.%Y %H:%i:%s') LAST_LOGIN, DATE_FORMAT(U.PERSONAL_BIRTHDAY, '%d.%m.%Y') PERSONAL_BIRTHDAY
FROM
b_user U
WHERE
(1=1
AND
(
U.ID='3'
)
)
ORDER BY U.ID asc;
SELECT C.ID, C.BLOG_ID, C.NAME FROM b_blog_category C WHERE C.ID = 9;
SELECT C.ID, C.BLOG_ID, C.NAME FROM b_blog_category C WHERE C.ID = 10;
SELECT C.ID, C.BLOG_ID, C.NAME FROM b_blog_category C WHERE C.ID = 7;
SELECT C.ID, C.BLOG_ID, C.NAME FROM b_blog_category C WHERE C.ID = 11;
SELECT
UF.ID
,UF.ENTITY_ID
,UF.FIELD_NAME
,UF.USER_TYPE_ID
,UF.XML_ID
,UF.SORT
,UF.MULTIPLE
,UF.MANDATORY
,UF.SHOW_FILTER
,UF.SHOW_IN_LIST
,UF.EDIT_IN_LIST
,UF.IS_SEARCHABLE
,UF.SETTINGS
,UFL.EDIT_FORM_LABEL
,UFL.LIST_COLUMN_LABEL
,UFL.LIST_FILTER_LABEL
,UFL.ERROR_MESSAGE
,UFL.HELP_MESSAGE
FROM
b_user_field UF
LEFT JOIN b_user_field_lang UFL on UFL.LANGUAGE_ID = 'ru' AND UFL.USER_FIELD_ID = UF.ID
WHERE UF.ENTITY_ID = 'BLOG_POST'
ORDER BY UF.SORT ASC, UF.ID ASC;
SELECT VALUE_ID, UF_BLOG_POST_DOC, UF_BLOG_POST_URL_PRV, UF_GRATITUDE FROM b_uts_blog_post WHERE VALUE_ID = 3;
SELECT P.*, IF(P.DATE_PUBLISH <= NOW(), 'Y', 'N') as DATE_PUBLISHED, DATE_FORMAT(P.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(P.DATE_PUBLISH, '%d.%m.%Y %H:%i:%s') as DATE_PUBLISH FROM b_blog_post P WHERE P.ID = 2;
SELECT G.ID as ID, G.FILE_ID as FILE_ID, G.POST_ID as POST_ID, G.BLOG_ID as BLOG_ID, G.USER_ID as USER_ID, G.TITLE as TITLE, DATE_FORMAT(G.TIMESTAMP_X, '%d.%m.%Y %H:%i:%s') as TIMESTAMP_X, G.IMAGE_SIZE as IMAGE_SIZE FROM b_blog_image G WHERE ((((G.POST_ID = 2 )))) AND ((((G.BLOG_ID = 2 )))) AND ((((G.IS_COMMENT = 'N' )))) ORDER BY G.ID ASC ;
SELECT G.* FROM b_blog_image G WHERE G.ID = 3;
SELECT B.ID, B.USER_ID, B.ALIAS, B.DESCRIPTION, B.AVATAR, B.INTERESTS, B.ALLOW_POST, DATE_FORMAT(B.LAST_VISIT, '%d.%m.%Y %H:%i:%s') as LAST_VISIT, DATE_FORMAT(B.DATE_REG, '%d.%m.%Y %H:%i:%s') as DATE_REG FROM b_blog_user B WHERE B.USER_ID = 3;
SELECT U.*, DATE_FORMAT(U.TIMESTAMP_X, '%d.%m.%Y %H:%i:%s') TIMESTAMP_X, IF(U.LAST_ACTIVITY_DATE > DATE_SUB(NOW(), INTERVAL 120 SECOND), 'Y', 'N') IS_ONLINE, DATE_FORMAT(U.DATE_REGISTER, '%d.%m.%Y %H:%i:%s') DATE_REGISTER, DATE_FORMAT(U.LAST_LOGIN, '%d.%m.%Y %H:%i:%s') LAST_LOGIN, DATE_FORMAT(U.PERSONAL_BIRTHDAY, '%d.%m.%Y') PERSONAL_BIRTHDAY
FROM
b_user U
WHERE
(1=1
AND
(
U.ID='3'
)
)
ORDER BY U.ID asc;
SELECT C.ID, C.BLOG_ID, C.NAME FROM b_blog_category C WHERE C.ID = 5;
SELECT C.ID, C.BLOG_ID, C.NAME FROM b_blog_category C WHERE C.ID = 6;
SELECT C.ID, C.BLOG_ID, C.NAME FROM b_blog_category C WHERE C.ID = 8;
SELECT VALUE_ID, UF_BLOG_POST_DOC, UF_BLOG_POST_URL_PRV, UF_GRATITUDE FROM b_uts_blog_post WHERE VALUE_ID = 2;
SELECT TAG
FROM b_cache_tag
WHERE SITE_ID = 's1'
AND CACHE_SALT = '/f20'
AND RELATIVE_PATH = '/s1/bitrix/menu/345'
;
INSERT IGNORE INTO b_cache_tag (SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG)
VALUES
('s1', '/f20', '/s1/bitrix/menu/345', 'bitrix:menu');
SELECT
COUNT(ST.ID) as CNT
FROM
b_sticker ST
WHERE
((ST.PERSONAL='Y' AND ST.CREATED_BY=1) OR ST.PERSONAL='N')
AND ST.CLOSED='N' AND ST.DELETED='N' AND ST.SITE_ID='s1'
AND ST.PAGE_URL='/blogs/s1_blog_3/';
SET NAMES 'utf8';
SET collation_connection = "utf8_unicode_ci";
SELECT 'x'
FROM b_agent
WHERE
ACTIVE = 'Y'
AND NEXT_EXEC <= now()
AND (DATE_CHECK IS NULL OR DATE_CHECK <= now())
LIMIT 1
;
SELECT GET_LOCK('cff29ec0118154ee0dcf115d29478b29_agent', 0) as L;
SELECT ID, NAME, AGENT_INTERVAL, IS_PERIOD, MODULE_ID FROM b_agent WHERE ACTIVE='Y' AND NEXT_EXEC<=now() AND (DATE_CHECK IS NULL OR DATE_CHECK<=now()) ORDER BY RUNNING ASC, SORT desc;
UPDATE b_agent SET DATE_CHECK=DATE_ADD(IF(DATE_CHECK IS NULL, now(), DATE_CHECK), INTERVAL 600 SECOND) WHERE ID IN (20);
SELECT RELEASE_LOCK('cff29ec0118154ee0dcf115d29478b29_agent');
UPDATE b_agent SET RUNNING='Y' WHERE ID=20;
SELECT SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG from b_cache_tag WHERE TAG='*'
LIMIT 0, 1;
SELECT SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG from b_cache_tag WHERE TAG='**';
SELECT count(1) CNT from b_cache_tag WHERE TAG='*'
LIMIT 0, 1;
UPDATE b_agent SET
NAME='\\Bitrix\\Main\\Data\\CacheEngineFiles::delayedDelete(1);',
LAST_EXEC=now(),
NEXT_EXEC=DATE_ADD(NEXT_EXEC, INTERVAL 1 SECOND),
DATE_CHECK=NULL,
RUNNING='N'
WHERE ID=20;
SELECT B.ID, B.USER_ID, B.ALIAS, B.DESCRIPTION, B.AVATAR, B.INTERESTS, B.ALLOW_POST, DATE_FORMAT(B.LAST_VISIT, '%d.%m.%Y %H:%i:%s') as LAST_VISIT, DATE_FORMAT(B.DATE_REG, '%d.%m.%Y %H:%i:%s') as DATE_REG FROM b_blog_user B WHERE B.USER_ID = 1;
SELECT * FROM `b_blog_user` LIMIT 0;
UPDATE b_blog_user SET LAST_VISIT=now() WHERE ID = 1 ;
SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, DATE_FORMAT(B.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(B.DATE_UPDATE, '%d.%m.%Y %H:%i:%s') as DATE_UPDATE, DATE_FORMAT(B.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE FROM b_blog B WHERE B.OWNER_ID = 1 AND B.GROUP_ID IN (1);
SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, DATE_FORMAT(B.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(B.DATE_UPDATE, '%d.%m.%Y %H:%i:%s') as DATE_UPDATE, DATE_FORMAT(B.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE FROM b_blog B WHERE B.URL = 's1_blog_3' AND B.GROUP_ID IN (1);
SELECT G.ID, G.NAME, G.SITE_ID FROM b_blog_group G WHERE G.ID = 1;
SELECT COUNT(P.ID) as ID FROM b_blog_post P WHERE ((((P.BLOG_ID = 2 )))) AND ((((P.PUBLISH_STATUS = 'K' )))) ;
SELECT COUNT(P.ID) as ID FROM b_blog_post P WHERE ((((P.BLOG_ID = 2 )))) AND ((((P.PUBLISH_STATUS = 'D' )))) AND ((((P.AUTHOR_ID = 1 )))) ;
SELECT COUNT( B.ID) as CNT FROM b_blog_user B INNER JOIN b_blog_user2user_group U2UG ON (B.USER_ID = U2UG.USER_ID) WHERE ((((B.USER_ID = 1 )))) AND ((((U2UG.BLOG_ID = 2 )))) ;
SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, DATE_FORMAT(B.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(B.DATE_UPDATE, '%d.%m.%Y %H:%i:%s') as DATE_UPDATE, DATE_FORMAT(B.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE FROM b_blog B WHERE B.OWNER_ID = 1 AND B.GROUP_ID IN (1);
SELECT COUNT(P.ID) as ID FROM b_blog_post P WHERE ((((P.BLOG_ID = 2 )))) AND ((((P.PUBLISH_STATUS = 'K' )))) ;
SELECT COUNT(P.ID) as ID FROM b_blog_post P WHERE ((((P.BLOG_ID = 2 )))) AND ((((P.PUBLISH_STATUS = 'D' )))) AND ((((P.AUTHOR_ID = 1 )))) ;
SELECT COUNT( B.ID) as CNT FROM b_blog_user B INNER JOIN b_blog_user2user_group U2UG ON (B.USER_ID = U2UG.USER_ID) WHERE ((((B.USER_ID = 1 )))) AND ((((U2UG.BLOG_ID = 2 )))) ;
SELECT UG.ID, UG.USER_ID, UG.BLOG_ID, UG.USER_GROUP_ID FROM b_blog_user2user_group UG WHERE UG.USER_ID = 1 AND UG.BLOG_ID = 0 ;
SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, DATE_FORMAT(B.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(B.DATE_UPDATE, '%d.%m.%Y %H:%i:%s') as DATE_UPDATE, DATE_FORMAT(B.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE FROM b_blog B WHERE B.URL = 's1_blog_3' ;
SELECT UG.ID, UG.USER_ID, UG.BLOG_ID, UG.USER_GROUP_ID FROM b_blog_user2user_group UG INNER JOIN b_blog B ON (UG.BLOG_ID = B.ID AND B.URL='s1_blog_3') WHERE UG.USER_ID = 1 ;
SET NAMES 'utf8';
SET collation_connection = "utf8_unicode_ci";
SELECT 'x'
FROM b_agent
WHERE
ACTIVE = 'Y'
AND NEXT_EXEC <= now()
AND (DATE_CHECK IS NULL OR DATE_CHECK <= now())
LIMIT 1
;
SELECT GET_LOCK('cff29ec0118154ee0dcf115d29478b29_agent', 0) as L;
SELECT ID, NAME, AGENT_INTERVAL, IS_PERIOD, MODULE_ID FROM b_agent WHERE ACTIVE='Y' AND NEXT_EXEC<=now() AND (DATE_CHECK IS NULL OR DATE_CHECK<=now()) ORDER BY RUNNING ASC, SORT desc;
UPDATE b_agent SET DATE_CHECK=DATE_ADD(IF(DATE_CHECK IS NULL, now(), DATE_CHECK), INTERVAL 600 SECOND) WHERE ID IN (20);
SELECT RELEASE_LOCK('cff29ec0118154ee0dcf115d29478b29_agent');
UPDATE b_agent SET RUNNING='Y' WHERE ID=20;
SELECT SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG from b_cache_tag WHERE TAG='*'
LIMIT 0, 1;
DELETE FROM b_cache_tag
WHERE SITE_ID = '*'
AND CACHE_SALT = '*'
AND RELATIVE_PATH = '/bitrix/cache/s1/photogallery.~194981';
SELECT SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG from b_cache_tag WHERE TAG='**';
SELECT count(1) CNT from b_cache_tag WHERE TAG='*'
LIMIT 0, 1;
UPDATE b_cache_tag SET RELATIVE_PATH='0:1469352793' WHERE TAG='**';
DELETE FROM b_agent WHERE ID=20;
SELECT B.ID, B.USER_ID, B.ALIAS, B.DESCRIPTION, B.AVATAR, B.INTERESTS, B.ALLOW_POST, DATE_FORMAT(B.LAST_VISIT, '%d.%m.%Y %H:%i:%s') as LAST_VISIT, DATE_FORMAT(B.DATE_REG, '%d.%m.%Y %H:%i:%s') as DATE_REG FROM b_blog_user B WHERE B.USER_ID = 1;
SELECT * FROM `b_blog_user` LIMIT 0;
UPDATE b_blog_user SET LAST_VISIT=now() WHERE ID = 1 ;
SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, DATE_FORMAT(B.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(B.DATE_UPDATE, '%d.%m.%Y %H:%i:%s') as DATE_UPDATE, DATE_FORMAT(B.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE FROM b_blog B WHERE B.OWNER_ID = 1 AND B.GROUP_ID IN (1);
SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, DATE_FORMAT(B.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(B.DATE_UPDATE, '%d.%m.%Y %H:%i:%s') as DATE_UPDATE, DATE_FORMAT(B.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE FROM b_blog B WHERE B.URL = 's1_blog_3' AND B.GROUP_ID IN (1);
SELECT G.ID, G.NAME, G.SITE_ID FROM b_blog_group G WHERE G.ID = 1;
SELECT COUNT(P.ID) as ID FROM b_blog_post P WHERE ((((P.BLOG_ID = 2 )))) AND ((((P.PUBLISH_STATUS = 'K' )))) ;
SELECT COUNT(P.ID) as ID FROM b_blog_post P WHERE ((((P.BLOG_ID = 2 )))) AND ((((P.PUBLISH_STATUS = 'D' )))) AND ((((P.AUTHOR_ID = 1 )))) ;
SELECT COUNT( B.ID) as CNT FROM b_blog_user B INNER JOIN b_blog_user2user_group U2UG ON (B.USER_ID = U2UG.USER_ID) WHERE ((((B.USER_ID = 1 )))) AND ((((U2UG.BLOG_ID = 2 )))) ;
SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, DATE_FORMAT(B.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(B.DATE_UPDATE, '%d.%m.%Y %H:%i:%s') as DATE_UPDATE, DATE_FORMAT(B.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE FROM b_blog B WHERE B.OWNER_ID = 1 AND B.GROUP_ID IN (1);
SELECT COUNT(P.ID) as ID FROM b_blog_post P WHERE ((((P.BLOG_ID = 2 )))) AND ((((P.PUBLISH_STATUS = 'K' )))) ;
SELECT COUNT(P.ID) as ID FROM b_blog_post P WHERE ((((P.BLOG_ID = 2 )))) AND ((((P.PUBLISH_STATUS = 'D' )))) AND ((((P.AUTHOR_ID = 1 )))) ;
SELECT COUNT( B.ID) as CNT FROM b_blog_user B INNER JOIN b_blog_user2user_group U2UG ON (B.USER_ID = U2UG.USER_ID) WHERE ((((B.USER_ID = 1 )))) AND ((((U2UG.BLOG_ID = 2 )))) ;
SELECT UG.ID, UG.USER_ID, UG.BLOG_ID, UG.USER_GROUP_ID FROM b_blog_user2user_group UG WHERE UG.USER_ID = 1 AND UG.BLOG_ID = 0 ;
SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, DATE_FORMAT(B.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(B.DATE_UPDATE, '%d.%m.%Y %H:%i:%s') as DATE_UPDATE, DATE_FORMAT(B.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE FROM b_blog B WHERE B.URL = 's1_blog_3' ;
SELECT UG.ID, UG.USER_ID, UG.BLOG_ID, UG.USER_GROUP_ID FROM b_blog_user2user_group UG INNER JOIN b_blog B ON (UG.BLOG_ID = B.ID AND B.URL='s1_blog_3') WHERE UG.USER_ID = 1 ;
SET NAMES 'utf8';
SET collation_connection = "utf8_unicode_ci";
SELECT 'x'
FROM b_agent
WHERE
ACTIVE = 'Y'
AND NEXT_EXEC <= now()
AND (DATE_CHECK IS NULL OR DATE_CHECK <= now())
LIMIT 1
;
SELECT UNIX_TIMESTAMP(MIN(NEXT_EXEC))-UNIX_TIMESTAMP(NOW()) DATE_DIFF FROM b_agent WHERE ACTIVE='Y' ;
SELECT B.ID, B.USER_ID, B.ALIAS, B.DESCRIPTION, B.AVATAR, B.INTERESTS, B.ALLOW_POST, DATE_FORMAT(B.LAST_VISIT, '%d.%m.%Y %H:%i:%s') as LAST_VISIT, DATE_FORMAT(B.DATE_REG, '%d.%m.%Y %H:%i:%s') as DATE_REG FROM b_blog_user B WHERE B.USER_ID = 1;
SELECT * FROM `b_blog_user` LIMIT 0;
UPDATE b_blog_user SET LAST_VISIT=now() WHERE ID = 1 ;
SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, DATE_FORMAT(B.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(B.DATE_UPDATE, '%d.%m.%Y %H:%i:%s') as DATE_UPDATE, DATE_FORMAT(B.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE FROM b_blog B WHERE B.OWNER_ID = 1 AND B.GROUP_ID IN (1);
SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, DATE_FORMAT(B.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(B.DATE_UPDATE, '%d.%m.%Y %H:%i:%s') as DATE_UPDATE, DATE_FORMAT(B.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE FROM b_blog B WHERE B.URL = 's1_blog_3' AND B.GROUP_ID IN (1);
SELECT G.ID, G.NAME, G.SITE_ID FROM b_blog_group G WHERE G.ID = 1;
SELECT COUNT(P.ID) as ID FROM b_blog_post P WHERE ((((P.BLOG_ID = 2 )))) AND ((((P.PUBLISH_STATUS = 'K' )))) ;
SELECT COUNT(P.ID) as ID FROM b_blog_post P WHERE ((((P.BLOG_ID = 2 )))) AND ((((P.PUBLISH_STATUS = 'D' )))) AND ((((P.AUTHOR_ID = 1 )))) ;
SELECT COUNT( B.ID) as CNT FROM b_blog_user B INNER JOIN b_blog_user2user_group U2UG ON (B.USER_ID = U2UG.USER_ID) WHERE ((((B.USER_ID = 1 )))) AND ((((U2UG.BLOG_ID = 2 )))) ;
SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, DATE_FORMAT(B.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(B.DATE_UPDATE, '%d.%m.%Y %H:%i:%s') as DATE_UPDATE, DATE_FORMAT(B.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE FROM b_blog B WHERE B.OWNER_ID = 1 AND B.GROUP_ID IN (1);
SELECT COUNT(P.ID) as ID FROM b_blog_post P WHERE ((((P.BLOG_ID = 2 )))) AND ((((P.PUBLISH_STATUS = 'K' )))) ;
SELECT COUNT(P.ID) as ID FROM b_blog_post P WHERE ((((P.BLOG_ID = 2 )))) AND ((((P.PUBLISH_STATUS = 'D' )))) AND ((((P.AUTHOR_ID = 1 )))) ;
SELECT COUNT( B.ID) as CNT FROM b_blog_user B INNER JOIN b_blog_user2user_group U2UG ON (B.USER_ID = U2UG.USER_ID) WHERE ((((B.USER_ID = 1 )))) AND ((((U2UG.BLOG_ID = 2 )))) ;
SELECT UG.ID, UG.USER_ID, UG.BLOG_ID, UG.USER_GROUP_ID FROM b_blog_user2user_group UG WHERE UG.USER_ID = 1 AND UG.BLOG_ID = 0 ;
SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, DATE_FORMAT(B.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(B.DATE_UPDATE, '%d.%m.%Y %H:%i:%s') as DATE_UPDATE, DATE_FORMAT(B.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE FROM b_blog B WHERE B.URL = 's1_blog_3' ;
SELECT UG.ID, UG.USER_ID, UG.BLOG_ID, UG.USER_GROUP_ID FROM b_blog_user2user_group UG INNER JOIN b_blog B ON (UG.BLOG_ID = B.ID AND B.URL='s1_blog_3') WHERE UG.USER_ID = 1 ;
SELECT C.ID as ID, C.BLOG_ID as BLOG_ID, C.USER_ID as USER_ID FROM b_blog_user2blog C WHERE ((((C.BLOG_ID = 2 )))) AND ((((C.USER_ID = 1 )))) ;
SELECT COUNT( B.ID) as CNT FROM b_blog_user B INNER JOIN b_blog_user2user_group U2UG ON (B.USER_ID = U2UG.USER_ID) WHERE ((((B.USER_ID = 1 )))) AND ((((U2UG.BLOG_ID = 2 )))) ;
SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, DATE_FORMAT(B.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(B.DATE_UPDATE, '%d.%m.%Y %H:%i:%s') as DATE_UPDATE, DATE_FORMAT(B.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE FROM b_blog B WHERE B.ID = 2;
SELECT U.*, DATE_FORMAT(U.TIMESTAMP_X, '%d.%m.%Y %H:%i:%s') TIMESTAMP_X, IF(U.LAST_ACTIVITY_DATE > DATE_SUB(NOW(), INTERVAL 120 SECOND), 'Y', 'N') IS_ONLINE, DATE_FORMAT(U.DATE_REGISTER, '%d.%m.%Y %H:%i:%s') DATE_REGISTER, DATE_FORMAT(U.LAST_LOGIN, '%d.%m.%Y %H:%i:%s') LAST_LOGIN, DATE_FORMAT(U.PERSONAL_BIRTHDAY, '%d.%m.%Y') PERSONAL_BIRTHDAY
FROM
b_user U
WHERE
(1=1
AND
(
U.ID='1'
)
)
ORDER BY U.ID asc;
SELECT * FROM `b_blog_user2blog` LIMIT 0;
INSERT INTO b_blog_user2blog(`USER_ID`, `BLOG_ID`) VALUES('1', '2');
SELECT U2B.ID, U2B.BLOG_ID, U2B.USER_ID FROM b_blog_user2blog U2B WHERE U2B.ID = 1;
SELECT B.ID, B.USER_ID, B.ALIAS, B.DESCRIPTION, B.AVATAR, B.INTERESTS, B.ALLOW_POST, DATE_FORMAT(B.LAST_VISIT, '%d.%m.%Y %H:%i:%s') as LAST_VISIT, DATE_FORMAT(B.DATE_REG, '%d.%m.%Y %H:%i:%s') as DATE_REG FROM b_blog_user B WHERE B.USER_ID = 1;
SELECT U.*, DATE_FORMAT(U.TIMESTAMP_X, '%d.%m.%Y %H:%i:%s') TIMESTAMP_X, IF(U.LAST_ACTIVITY_DATE > DATE_SUB(NOW(), INTERVAL 120 SECOND), 'Y', 'N') IS_ONLINE, DATE_FORMAT(U.DATE_REGISTER, '%d.%m.%Y %H:%i:%s') DATE_REGISTER, DATE_FORMAT(U.LAST_LOGIN, '%d.%m.%Y %H:%i:%s') LAST_LOGIN, DATE_FORMAT(U.PERSONAL_BIRTHDAY, '%d.%m.%Y') PERSONAL_BIRTHDAY
FROM
b_user U
WHERE
(1=1
AND
(
U.ID='3'
)
)
ORDER BY U.ID asc;
SELECT * FROM `b_event` LIMIT 0;
SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, DATE_FORMAT(B.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(B.DATE_UPDATE, '%d.%m.%Y %H:%i:%s') as DATE_UPDATE, DATE_FORMAT(B.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE FROM b_blog B WHERE B.OWNER_ID = 1 AND B.GROUP_ID IN (1);
SET NAMES 'utf8';
SET collation_connection = "utf8_unicode_ci";
SELECT 'x'
FROM b_agent
WHERE
ACTIVE = 'Y'
AND NEXT_EXEC <= now()
AND (DATE_CHECK IS NULL OR DATE_CHECK <= now())
LIMIT 1
;
SELECT UNIX_TIMESTAMP(MIN(NEXT_EXEC))-UNIX_TIMESTAMP(NOW()) DATE_DIFF FROM b_agent WHERE ACTIVE='Y' ;
SELECT B.ID, B.USER_ID, B.ALIAS, B.DESCRIPTION, B.AVATAR, B.INTERESTS, B.ALLOW_POST, DATE_FORMAT(B.LAST_VISIT, '%d.%m.%Y %H:%i:%s') as LAST_VISIT, DATE_FORMAT(B.DATE_REG, '%d.%m.%Y %H:%i:%s') as DATE_REG FROM b_blog_user B WHERE B.USER_ID = 1;
SELECT * FROM `b_blog_user` LIMIT 0;
UPDATE b_blog_user SET LAST_VISIT=now() WHERE ID = 1 ;
SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, DATE_FORMAT(B.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(B.DATE_UPDATE, '%d.%m.%Y %H:%i:%s') as DATE_UPDATE, DATE_FORMAT(B.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE FROM b_blog B WHERE B.OWNER_ID = 1 AND B.GROUP_ID IN (1);
SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, DATE_FORMAT(B.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(B.DATE_UPDATE, '%d.%m.%Y %H:%i:%s') as DATE_UPDATE, DATE_FORMAT(B.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE FROM b_blog B WHERE B.URL = 's1_blog_3' AND B.GROUP_ID IN (1);
SELECT G.ID, G.NAME, G.SITE_ID FROM b_blog_group G WHERE G.ID = 1;
SELECT COUNT(P.ID) as ID FROM b_blog_post P WHERE ((((P.BLOG_ID = 2 )))) AND ((((P.PUBLISH_STATUS = 'K' )))) ;
SELECT COUNT(P.ID) as ID FROM b_blog_post P WHERE ((((P.BLOG_ID = 2 )))) AND ((((P.PUBLISH_STATUS = 'D' )))) AND ((((P.AUTHOR_ID = 1 )))) ;
SELECT COUNT( B.ID) as CNT FROM b_blog_user B INNER JOIN b_blog_user2user_group U2UG ON (B.USER_ID = U2UG.USER_ID) WHERE ((((B.USER_ID = 1 )))) AND ((((U2UG.BLOG_ID = 2 )))) ;
SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, DATE_FORMAT(B.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(B.DATE_UPDATE, '%d.%m.%Y %H:%i:%s') as DATE_UPDATE, DATE_FORMAT(B.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE FROM b_blog B WHERE B.OWNER_ID = 1 AND B.GROUP_ID IN (1);
SELECT COUNT(P.ID) as ID FROM b_blog_post P WHERE ((((P.BLOG_ID = 2 )))) AND ((((P.PUBLISH_STATUS = 'K' )))) ;
SELECT COUNT(P.ID) as ID FROM b_blog_post P WHERE ((((P.BLOG_ID = 2 )))) AND ((((P.PUBLISH_STATUS = 'D' )))) AND ((((P.AUTHOR_ID = 1 )))) ;
SELECT COUNT( B.ID) as CNT FROM b_blog_user B INNER JOIN b_blog_user2user_group U2UG ON (B.USER_ID = U2UG.USER_ID) WHERE ((((B.USER_ID = 1 )))) AND ((((U2UG.BLOG_ID = 2 )))) ;
SELECT UG.ID, UG.USER_ID, UG.BLOG_ID, UG.USER_GROUP_ID FROM b_blog_user2user_group UG WHERE UG.USER_ID = 1 AND UG.BLOG_ID = 0 ;
SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, DATE_FORMAT(B.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(B.DATE_UPDATE, '%d.%m.%Y %H:%i:%s') as DATE_UPDATE, DATE_FORMAT(B.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE FROM b_blog B WHERE B.URL = 's1_blog_3' ;
SELECT UG.ID, UG.USER_ID, UG.BLOG_ID, UG.USER_GROUP_ID FROM b_blog_user2user_group UG INNER JOIN b_blog B ON (UG.BLOG_ID = B.ID AND B.URL='s1_blog_3') WHERE UG.USER_ID = 1 ;
SELECT 'x' FROM b_event WHERE SUCCESS_EXEC='N' LIMIT 1;
SELECT GET_LOCK('cff29ec0118154ee0dcf115d29478b29_event', 0) as L;
SELECT ID, C_FIELDS, EVENT_NAME, MESSAGE_ID, LID, DATE_FORMAT(DATE_INSERT, '%d.%m.%Y %H:%i:%s') as DATE_INSERT, DUPLICATE
FROM b_event
WHERE SUCCESS_EXEC='N'
ORDER BY ID
LIMIT 5;
SELECT
`main_mail_internal_event_attachment`.`FILE_ID` AS `FILE_ID`
FROM `b_event_attachment` `main_mail_internal_event_attachment`
WHERE `main_mail_internal_event_attachment`.`EVENT_ID` = 1;
SELECT
`main_site`.`SERVER_NAME` AS `SERVER_NAME`,
`main_site_culture`.`CHARSET` AS `CULTURE_CHARSET`
FROM `b_lang` `main_site`
LEFT JOIN `b_culture` `main_site_culture` ON `main_site`.`CULTURE_ID` = `main_site_culture`.`ID`
WHERE (UPPER(`main_site`.`LID`) like upper('s1'));
SELECT
`main_mail_internal_event_message`.`ID` AS `ID`
FROM `b_event_message` `main_mail_internal_event_message`
LEFT JOIN `b_event_message_site` `main_mail_internal_event_message_event_message_site` ON `main_mail_internal_event_message`.`ID` = `main_mail_internal_event_message_event_message_site`.`EVENT_MESSAGE_ID`
WHERE UPPER(`main_mail_internal_event_message`.`ACTIVE`) like upper('Y')
AND UPPER(`main_mail_internal_event_message`.`EVENT_NAME`) like upper('BLOG_YOU_TO_BLOG')
AND (UPPER(`main_mail_internal_event_message_event_message_site`.`SITE_ID`) like upper('s1'))
GROUP BY `main_mail_internal_event_message`.`ID`;
SELECT
`main_mail_internal_event_message`.`ID` AS `ID`,
`main_mail_internal_event_message`.`TIMESTAMP_X` AS `TIMESTAMP_X`,
`main_mail_internal_event_message`.`EVENT_NAME` AS `EVENT_NAME`,
`main_mail_internal_event_message`.`LID` AS `LID`,
`main_mail_internal_event_message`.`ACTIVE` AS `ACTIVE`,
`main_mail_internal_event_message`.`EMAIL_FROM` AS `EMAIL_FROM`,
`main_mail_internal_event_message`.`EMAIL_TO` AS `EMAIL_TO`,
`main_mail_internal_event_message`.`SUBJECT` AS `SUBJECT`,
`main_mail_internal_event_message`.`MESSAGE` AS `MESSAGE`,
`main_mail_internal_event_message`.`MESSAGE_PHP` AS `MESSAGE_PHP`,
`main_mail_internal_event_message`.`BODY_TYPE` AS `BODY_TYPE`,
`main_mail_internal_event_message`.`BCC` AS `BCC`,
`main_mail_internal_event_message`.`REPLY_TO` AS `REPLY_TO`,
`main_mail_internal_event_message`.`CC` AS `CC`,
`main_mail_internal_event_message`.`IN_REPLY_TO` AS `IN_REPLY_TO`,
`main_mail_internal_event_message`.`PRIORITY` AS `PRIORITY`,
`main_mail_internal_event_message`.`FIELD1_NAME` AS `FIELD1_NAME`,
`main_mail_internal_event_message`.`FIELD1_VALUE` AS `FIELD1_VALUE`,
`main_mail_internal_event_message`.`FIELD2_NAME` AS `FIELD2_NAME`,
`main_mail_internal_event_message`.`FIELD2_VALUE` AS `FIELD2_VALUE`,
`main_mail_internal_event_message`.`SITE_TEMPLATE_ID` AS `SITE_TEMPLATE_ID`,
`main_mail_internal_event_message`.`ADDITIONAL_FIELD` AS `ADDITIONAL_FIELD`
FROM `b_event_message` `main_mail_internal_event_message`
WHERE `main_mail_internal_event_message`.`ID` = 14;
SELECT
`main_mail_internal_event_message_attachment`.`FILE_ID` AS `FILE_ID`
FROM `b_event_message_attachment` `main_mail_internal_event_message_attachment`
WHERE `main_mail_internal_event_message_attachment`.`EVENT_MESSAGE_ID` = 14;
SELECT
`main_mail_internal_event_message_site`.`SITE_ID` AS `SITE_ID`
FROM `b_event_message_site` `main_mail_internal_event_message_site`
WHERE `main_mail_internal_event_message_site`.`EVENT_MESSAGE_ID` = 14
AND (UPPER(`main_mail_internal_event_message_site`.`SITE_ID`) like upper('s1'));
SELECT
`main_site`.`LID` AS `LID`,
`main_site`.`SORT` AS `SORT`,
`main_site`.`DEF` AS `DEF`,
`main_site`.`ACTIVE` AS `ACTIVE`,
`main_site`.`NAME` AS `NAME`,
`main_site`.`DIR` AS `DIR`,
`main_site`.`LANGUAGE_ID` AS `LANGUAGE_ID`,
`main_site`.`DOC_ROOT` AS `DOC_ROOT`,
`main_site`.`DOMAIN_LIMITED` AS `DOMAIN_LIMITED`,
`main_site`.`SERVER_NAME` AS `SERVER_NAME`,
`main_site`.`SITE_NAME` AS `SITE_NAME`,
`main_site`.`EMAIL` AS `EMAIL`,
`main_site`.`CULTURE_ID` AS `CULTURE_ID`
FROM `b_lang` `main_site`
WHERE `main_site`.`LID` = 's1';
SET NAMES 'utf8';
SET collation_connection = "utf8_unicode_ci";
SELECT 'x'
FROM b_agent
WHERE
ACTIVE = 'Y'
AND NEXT_EXEC <= now()
AND (DATE_CHECK IS NULL OR DATE_CHECK <= now())
LIMIT 1
;
SELECT UNIX_TIMESTAMP(MIN(NEXT_EXEC))-UNIX_TIMESTAMP(NOW()) DATE_DIFF FROM b_agent WHERE ACTIVE='Y' ;
SET NAMES 'utf8';
SET collation_connection = "utf8_unicode_ci";
SELECT 'x'
FROM b_agent
WHERE
ACTIVE = 'Y'
AND NEXT_EXEC <= now()
AND (DATE_CHECK IS NULL OR DATE_CHECK <= now())
LIMIT 1
;
SELECT UNIX_TIMESTAMP(MIN(NEXT_EXEC))-UNIX_TIMESTAMP(NOW()) DATE_DIFF FROM b_agent WHERE ACTIVE='Y' ;
SELECT * FROM `b_event` LIMIT 0;
UPDATE b_event SET `DATE_EXEC` = '2016-07-24 12:33:27', `SUCCESS_EXEC` = 'Y' WHERE `ID` = '1';
SELECT
`main_mail_internal_event_attachment`.`FILE_ID` AS `FILE_ID`
FROM `b_event_attachment` `main_mail_internal_event_attachment`
WHERE `main_mail_internal_event_attachment`.`EVENT_ID` = 2;
SELECT
`main_site`.`SERVER_NAME` AS `SERVER_NAME`,
`main_site_culture`.`CHARSET` AS `CULTURE_CHARSET`
FROM `b_lang` `main_site`
LEFT JOIN `b_culture` `main_site_culture` ON `main_site`.`CULTURE_ID` = `main_site_culture`.`ID`
WHERE (UPPER(`main_site`.`LID`) like upper('s1'));
SELECT
`main_mail_internal_event_message`.`ID` AS `ID`
FROM `b_event_message` `main_mail_internal_event_message`
LEFT JOIN `b_event_message_site` `main_mail_internal_event_message_event_message_site` ON `main_mail_internal_event_message`.`ID` = `main_mail_internal_event_message_event_message_site`.`EVENT_MESSAGE_ID`
WHERE UPPER(`main_mail_internal_event_message`.`ACTIVE`) like upper('Y')
AND UPPER(`main_mail_internal_event_message`.`EVENT_NAME`) like upper('BLOG_USER_TO_YOUR_BLOG')
AND (UPPER(`main_mail_internal_event_message_event_message_site`.`SITE_ID`) like upper('s1'))
GROUP BY `main_mail_internal_event_message`.`ID`;
SELECT
`main_mail_internal_event_message`.`ID` AS `ID`,
`main_mail_internal_event_message`.`TIMESTAMP_X` AS `TIMESTAMP_X`,
`main_mail_internal_event_message`.`EVENT_NAME` AS `EVENT_NAME`,
`main_mail_internal_event_message`.`LID` AS `LID`,
`main_mail_internal_event_message`.`ACTIVE` AS `ACTIVE`,
`main_mail_internal_event_message`.`EMAIL_FROM` AS `EMAIL_FROM`,
`main_mail_internal_event_message`.`EMAIL_TO` AS `EMAIL_TO`,
`main_mail_internal_event_message`.`SUBJECT` AS `SUBJECT`,
`main_mail_internal_event_message`.`MESSAGE` AS `MESSAGE`,
`main_mail_internal_event_message`.`MESSAGE_PHP` AS `MESSAGE_PHP`,
`main_mail_internal_event_message`.`BODY_TYPE` AS `BODY_TYPE`,
`main_mail_internal_event_message`.`BCC` AS `BCC`,
`main_mail_internal_event_message`.`REPLY_TO` AS `REPLY_TO`,
`main_mail_internal_event_message`.`CC` AS `CC`,
`main_mail_internal_event_message`.`IN_REPLY_TO` AS `IN_REPLY_TO`,
`main_mail_internal_event_message`.`PRIORITY` AS `PRIORITY`,
`main_mail_internal_event_message`.`FIELD1_NAME` AS `FIELD1_NAME`,
`main_mail_internal_event_message`.`FIELD1_VALUE` AS `FIELD1_VALUE`,
`main_mail_internal_event_message`.`FIELD2_NAME` AS `FIELD2_NAME`,
`main_mail_internal_event_message`.`FIELD2_VALUE` AS `FIELD2_VALUE`,
`main_mail_internal_event_message`.`SITE_TEMPLATE_ID` AS `SITE_TEMPLATE_ID`,
`main_mail_internal_event_message`.`ADDITIONAL_FIELD` AS `ADDITIONAL_FIELD`
FROM `b_event_message` `main_mail_internal_event_message`
WHERE `main_mail_internal_event_message`.`ID` = 16;
SELECT
`main_mail_internal_event_message_attachment`.`FILE_ID` AS `FILE_ID`
FROM `b_event_message_attachment` `main_mail_internal_event_message_attachment`
WHERE `main_mail_internal_event_message_attachment`.`EVENT_MESSAGE_ID` = 16;
SELECT
`main_mail_internal_event_message_site`.`SITE_ID` AS `SITE_ID`
FROM `b_event_message_site` `main_mail_internal_event_message_site`
WHERE `main_mail_internal_event_message_site`.`EVENT_MESSAGE_ID` = 16
AND (UPPER(`main_mail_internal_event_message_site`.`SITE_ID`) like upper('s1'));
SELECT
`main_site`.`LID` AS `LID`,
`main_site`.`SORT` AS `SORT`,
`main_site`.`DEF` AS `DEF`,
`main_site`.`ACTIVE` AS `ACTIVE`,
`main_site`.`NAME` AS `NAME`,
`main_site`.`DIR` AS `DIR`,
`main_site`.`LANGUAGE_ID` AS `LANGUAGE_ID`,
`main_site`.`DOC_ROOT` AS `DOC_ROOT`,
`main_site`.`DOMAIN_LIMITED` AS `DOMAIN_LIMITED`,
`main_site`.`SERVER_NAME` AS `SERVER_NAME`,
`main_site`.`SITE_NAME` AS `SITE_NAME`,
`main_site`.`EMAIL` AS `EMAIL`,
`main_site`.`CULTURE_ID` AS `CULTURE_ID`
FROM `b_lang` `main_site`
WHERE `main_site`.`LID` = 's1';
UPDATE b_event SET `DATE_EXEC` = '2016-07-24 12:33:37', `SUCCESS_EXEC` = 'Y' WHERE `ID` = '2';
SELECT RELEASE_LOCK('cff29ec0118154ee0dcf115d29478b29_event');
SELECT DISTINCT
B.*
,B.XML_ID as EXTERNAL_ID
,DATE_FORMAT(B.TIMESTAMP_X, '%d.%m.%Y %H:%i:%s') as TIMESTAMP_X
,L.DIR as LANG_DIR
,L.SERVER_NAME
FROM
b_iblock B
INNER JOIN b_lang L ON L.LID=B.LID
WHERE 1 = 1
AND ((((B.ACTIVE='Y')))) AND ((((B.ID = '2'))))
;
SELECT DISTINCT
B.*
,B.XML_ID as EXTERNAL_ID
,DATE_FORMAT(B.TIMESTAMP_X, '%d.%m.%Y %H:%i:%s') as TIMESTAMP_X
,L.DIR as LANG_DIR
,L.SERVER_NAME
FROM
b_iblock B
INNER JOIN b_lang L ON L.LID=B.LID
WHERE 1 = 1
AND ((((B.ACTIVE='Y')))) AND ((((B.ID = '2'))))
;
SELECT 'x' FROM b_event WHERE SUCCESS_EXEC='N' LIMIT 1;
SELECT B.ID, B.USER_ID, B.ALIAS, B.DESCRIPTION, B.AVATAR, B.INTERESTS, B.ALLOW_POST, DATE_FORMAT(B.LAST_VISIT, '%d.%m.%Y %H:%i:%s') as LAST_VISIT, DATE_FORMAT(B.DATE_REG, '%d.%m.%Y %H:%i:%s') as DATE_REG FROM b_blog_user B WHERE B.USER_ID = 1;
SELECT * FROM `b_blog_user` LIMIT 0;
UPDATE b_blog_user SET LAST_VISIT=now() WHERE ID = 1 ;
SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, DATE_FORMAT(B.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(B.DATE_UPDATE, '%d.%m.%Y %H:%i:%s') as DATE_UPDATE, DATE_FORMAT(B.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE FROM b_blog B WHERE B.OWNER_ID = 1 AND B.GROUP_ID IN (1);
SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, DATE_FORMAT(B.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(B.DATE_UPDATE, '%d.%m.%Y %H:%i:%s') as DATE_UPDATE, DATE_FORMAT(B.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE FROM b_blog B WHERE B.URL = 's1_blog_3' AND B.GROUP_ID IN (1);
SELECT G.ID, G.NAME, G.SITE_ID FROM b_blog_group G WHERE G.ID = 1;
SELECT COUNT(P.ID) as ID FROM b_blog_post P WHERE ((((P.BLOG_ID = 2 )))) AND ((((P.PUBLISH_STATUS = 'K' )))) ;
SELECT COUNT(P.ID) as ID FROM b_blog_post P WHERE ((((P.BLOG_ID = 2 )))) AND ((((P.PUBLISH_STATUS = 'D' )))) AND ((((P.AUTHOR_ID = 1 )))) ;
SELECT COUNT( B.ID) as CNT FROM b_blog_user B INNER JOIN b_blog_user2user_group U2UG ON (B.USER_ID = U2UG.USER_ID) WHERE ((((B.USER_ID = 1 )))) AND ((((U2UG.BLOG_ID = 2 )))) ;
SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, DATE_FORMAT(B.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(B.DATE_UPDATE, '%d.%m.%Y %H:%i:%s') as DATE_UPDATE, DATE_FORMAT(B.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE FROM b_blog B WHERE B.OWNER_ID = 1 AND B.GROUP_ID IN (1);
SELECT COUNT(P.ID) as ID FROM b_blog_post P WHERE ((((P.BLOG_ID = 2 )))) AND ((((P.PUBLISH_STATUS = 'K' )))) ;
SELECT COUNT(P.ID) as ID FROM b_blog_post P WHERE ((((P.BLOG_ID = 2 )))) AND ((((P.PUBLISH_STATUS = 'D' )))) AND ((((P.AUTHOR_ID = 1 )))) ;
SELECT COUNT( B.ID) as CNT FROM b_blog_user B INNER JOIN b_blog_user2user_group U2UG ON (B.USER_ID = U2UG.USER_ID) WHERE ((((B.USER_ID = 1 )))) AND ((((U2UG.BLOG_ID = 2 )))) ;
SELECT UG.ID, UG.USER_ID, UG.BLOG_ID, UG.USER_GROUP_ID FROM b_blog_user2user_group UG WHERE UG.USER_ID = 1 AND UG.BLOG_ID = 0 ;
SELECT B.ID, B.NAME, B.DESCRIPTION, B.ACTIVE, B.OWNER_ID, B.URL, B.GROUP_ID, B.ENABLE_COMMENTS, B.ENABLE_IMG_VERIF, B.EMAIL_NOTIFY, B.ENABLE_RSS, B.REAL_URL, B.LAST_POST_ID, B.AUTO_GROUPS, B.ALLOW_HTML, B.SEARCH_INDEX, B.SOCNET_GROUP_ID, B.USE_SOCNET, DATE_FORMAT(B.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE, DATE_FORMAT(B.DATE_UPDATE, '%d.%m.%Y %H:%i:%s') as DATE_UPDATE, DATE_FORMAT(B.LAST_POST_DATE, '%d.%m.%Y %H:%i:%s') as LAST_POST_DATE FROM b_blog B WHERE B.URL = 's1_blog_3' ;
SELECT UG.ID, UG.USER_ID, UG.BLOG_ID, UG.USER_GROUP_ID FROM b_blog_user2user_group UG INNER JOIN b_blog B ON (UG.BLOG_ID = B.ID AND B.URL='s1_blog_3') WHERE UG.USER_ID = 1 ;
SET NAMES 'utf8';
SET collation_connection = "utf8_unicode_ci";
SELECT 'x'
FROM b_agent
WHERE
ACTIVE = 'Y'
AND NEXT_EXEC <= now()
AND (DATE_CHECK IS NULL OR DATE_CHECK <= now())
LIMIT 1
;
SELECT GET_LOCK('cff29ec0118154ee0dcf115d29478b29_agent', 0) as L;
SELECT ID, NAME, AGENT_INTERVAL, IS_PERIOD, MODULE_ID FROM b_agent WHERE ACTIVE='Y' AND NEXT_EXEC<=now() AND (DATE_CHECK IS NULL OR DATE_CHECK<=now()) ORDER BY RUNNING ASC, SORT desc;
UPDATE b_agent SET DATE_CHECK=DATE_ADD(IF(DATE_CHECK IS NULL, now(), DATE_CHECK), INTERVAL 600 SECOND) WHERE ID IN (6);
SELECT RELEASE_LOCK('cff29ec0118154ee0dcf115d29478b29_agent');
UPDATE b_agent SET RUNNING='Y' WHERE ID=6;
UPDATE b_agent SET
NAME='\\Bitrix\\Main\\Analytics\\CounterDataTable::submitData();',
LAST_EXEC=now(),
NEXT_EXEC=DATE_ADD(now(), INTERVAL 60 SECOND),
DATE_CHECK=NULL,
RUNNING='N'
WHERE ID=6;
SELECT Q.*,
DATE_FORMAT(Q.TIMESTAMP_X, '%d.%m.%Y') TIMESTAMP_X
FROM b_vote_question Q
WHERE (1=1
AND
(
(Q.ACTIVE = 'Y')
)
AND
(
Q.VOTE_ID = 1
)
)
ORDER BY Q.C_SORT ASC;
SELECT V.CHANNEL_ID, VQ.VOTE_ID, VA.*
FROM b_vote_answer VA
INNER JOIN b_vote_question VQ ON (VA.QUESTION_ID = VQ.ID)
INNER JOIN b_vote V ON (VQ.VOTE_ID = V.ID)
WHERE 1=1 AND ((VQ.VOTE_ID = 1)) AND ((VA.ACTIVE = 'Y')) AND ((VA.QUESTION_ID IN (1))) ORDER BY VA.C_SORT ASC;
SELECT VEQ.QUESTION_ID, VEA.ANSWER_ID, COUNT(VEA.ID) as COUNTER, MIN(TIMESTAMPDIFF(SECOND, VE.DATE_VOTE, NOW())) AS LAST_VOTE FROM b_vote_event VE INNER JOIN b_vote_event_question VEQ ON (VEQ.EVENT_ID = VE.ID) INNER JOIN b_vote_event_answer VEA ON (VEA.EVENT_QUESTION_ID = VEQ.ID) LEFT JOIN b_vote_user VU ON (VU.ID = VE.VOTE_USER_ID) WHERE 1=1 AND ((VE.VOTE_ID = 1)) AND ((VE.VALID = 'Y' )) GROUP BY VEQ.QUESTION_ID, VEA.ANSWER_ID ORDER BY COUNTER DESC;
UPDATE b_vote_user SET `LAST_IP` = '10.0.70.52', `DATE_LAST` = now(), `STAT_GUEST_ID` = '0', `AUTH_USER_ID` = '1' WHERE (ID='1') AND (AUTH_USER_ID='1');
INSERT INTO b_vote_event(`VOTE_ID`, `VOTE_USER_ID`, `DATE_VOTE`, `STAT_SESSION_ID`, `IP`, `VALID`) VALUES (1, 1, now(), 0, '10.0.70.52', 'Y');
INSERT INTO b_vote_event_question(`EVENT_ID`, `QUESTION_ID`) VALUES (2, 1);
INSERT INTO b_vote_event_answer(`ANSWER_ID`, `EVENT_QUESTION_ID`) VALUES (1, 2);
UPDATE b_vote SET `COUNTER` = COUNTER+1 WHERE ID='1';
UPDATE b_vote_question SET `COUNTER` = COUNTER+1 WHERE ID in (1);
UPDATE b_vote_answer SET `COUNTER` = COUNTER+1 WHERE ID in (1);
UPDATE b_vote_user SET `DATE_LAST` = now(), `COUNTER` = COUNTER+1 WHERE ID='1';
SELECT * FROM b_cache_tag WHERE TAG = 'vote_form_vote_1';
DELETE FROM b_cache_tag WHERE TAG = 'vote_form_vote_1';
DELETE FROM b_cache_tag
WHERE SITE_ID = 's1'
AND CACHE_SALT = '/e25'
AND RELATIVE_PATH = '/s1/bitrix/voting.current/ANKETA_s1/'
;
INSERT INTO b_cache_tag (SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG) VALUES ('*', '*', '/bitrix/cache/s1/bitrix/voting.current/ANKETA_s1.~619977', '*');
SELECT A.ID, A.MODULE_ID, A.USER_ID, B.LOGIN, B.NAME as USER_NAME, B.LAST_NAME, A.SORT, A.NAME, A.ACTIVE, DATE_FORMAT(A.LAST_EXEC, '%d.%m.%Y %H:%i:%s') as LAST_EXEC, DATE_FORMAT(A.NEXT_EXEC, '%d.%m.%Y %H:%i:%s') as NEXT_EXEC, A.AGENT_INTERVAL, A.IS_PERIOD FROM b_agent A LEFT JOIN b_user B ON(A.USER_ID = B.ID) WHERE A.NAME LIKE '\\\\Bitrix\\\\Main\\\\Data\\\\CacheEngineFiles::delayedDelete(%' ORDER BY A.ID DESC;
SELECT ID
FROM b_agent
WHERE NAME = '\\Bitrix\\Main\\Data\\CacheEngineFiles::delayedDelete();'
AND USER_ID IS NULL;
INSERT INTO b_cache_tag (SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG) VALUES ('*', '*', '/bitrix/managed_cache/MYSQL/agents.~947835', '*');
SELECT * FROM `b_agent` LIMIT 0;
INSERT INTO b_agent(`MODULE_ID`, `SORT`, `NAME`, `ACTIVE`, `NEXT_EXEC`, `AGENT_INTERVAL`, `IS_PERIOD`, `USER_ID`) VALUES('main', '100', '\\Bitrix\\Main\\Data\\CacheEngineFiles::delayedDelete();', 'Y', CURRENT_DATE, '1', 'Y', NULL );
DELETE FROM b_cache_tag
WHERE SITE_ID = 's1'
AND CACHE_SALT = '/e25'
AND RELATIVE_PATH = '/s1/bitrix/voting.result/1'
;
INSERT INTO b_cache_tag (SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG) VALUES ('*', '*', '/bitrix/cache/s1/bitrix/voting.result/1.~485621', '*');
DELETE FROM b_cache_tag
WHERE SITE_ID = 's1'
AND CACHE_SALT = '/e25'
AND RELATIVE_PATH = '/s1/bitrix/voting.form'
;
INSERT INTO b_cache_tag (SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG) VALUES ('*', '*', '/bitrix/cache/s1/bitrix/voting.form.~227422', '*');
INSERT INTO b_cache_tag (SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG) VALUES ('*', '*', '/bitrix/managed_cache/MYSQL/b_vote.~855528', '*');
SELECT DISTINCT
B.*
,B.XML_ID as EXTERNAL_ID
,DATE_FORMAT(B.TIMESTAMP_X, '%d.%m.%Y %H:%i:%s') as TIMESTAMP_X
,L.DIR as LANG_DIR
,L.SERVER_NAME
FROM
b_iblock B
INNER JOIN b_lang L ON L.LID=B.LID
WHERE 1 = 1
AND ((((B.ACTIVE='Y')))) AND ((((B.ID = '2'))))
;
SELECT DISTINCT
B.*
,B.XML_ID as EXTERNAL_ID
,DATE_FORMAT(B.TIMESTAMP_X, '%d.%m.%Y %H:%i:%s') as TIMESTAMP_X
,L.DIR as LANG_DIR
,L.SERVER_NAME
FROM
b_iblock B
INNER JOIN b_lang L ON L.LID=B.LID
WHERE 1 = 1
AND ((((B.ACTIVE='Y')))) AND ((((B.ID = '2'))))
;
SELECT VV.*, C.TITLE as CHANNEL_TITLE, C.ACTIVE as CHANNEL_ACTIVE,
C.HIDDEN as CHANNEL_HIDDEN, V.*,
CASE WHEN (C.ACTIVE = 'Y' AND V.ACTIVE = 'Y' AND V.DATE_START <= NOW() AND NOW() <= V.DATE_END)
THEN IF (C.VOTE_SINGLE != 'Y', 'green', 'yellow')
ELSE 'red'
END AS LAMP,
DATE_FORMAT(V.TIMESTAMP_X, '%d.%m.%Y %H:%i:%s') TIMESTAMP_X,
DATE_FORMAT(V.DATE_START, '%d.%m.%Y %H:%i:%s') DATE_START,
DATE_FORMAT(V.DATE_END, '%d.%m.%Y %H:%i:%s') DATE_END,
UNIX_TIMESTAMP(V.DATE_END) - UNIX_TIMESTAMP(V.DATE_START) PERIOD
FROM (
SELECT V.ID, COUNT(Q.ID) QUESTIONS
FROM b_vote V
INNER JOIN b_vote_channel C ON (C.ID=V.CHANNEL_ID)
LEFT JOIN b_vote_question Q ON (Q.VOTE_ID=V.ID)
WHERE (1=1
AND
(
(
(V.CHANNEL_ID='1' and V.CHANNEL_ID is not null)
)
)
AND
(
(V.ACTIVE='Y' and now()>=V.DATE_START and now()<=V.DATE_END)
)
)
GROUP BY V.ID
) VV
INNER JOIN b_vote V ON (V.ID = VV.ID)
INNER JOIN b_vote_channel C ON (C.ID = V.CHANNEL_ID) ORDER BY V.ID desc ;
SELECT MAX(V.ID) AS ACTIVE_VOTE_ID FROM b_vote V WHERE V.CHANNEL_ID=1 AND V.ACTIVE = 'Y' AND NOW() >= V.DATE_START AND V.DATE_END >= NOW();
SELECT TAG
FROM b_cache_tag
WHERE SITE_ID = 's1'
AND CACHE_SALT = '/e25'
AND RELATIVE_PATH = '/s1/bitrix/voting.current/ANKETA_s1/'
;
INSERT IGNORE INTO b_cache_tag (SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG)
VALUES
('s1', '/e25', '/s1/bitrix/voting.current/ANKETA_s1/', 'vote_form_channel_1'),
('s1', '/e25', '/s1/bitrix/voting.current/ANKETA_s1/', 'vote_form_vote_1');
SELECT V.*,
C.TITLE as CHANNEL_TITLE,
C.SYMBOLIC_NAME as CHANNEL_SYMBOLIC_NAME,
C.C_SORT as CHANNEL_C_SORT,
C.FIRST_SITE_ID as CHANNEL_FIRST_SITE_ID,
C.ACTIVE as CHANNEL_ACTIVE,
C.HIDDEN as CHANNEL_HIDDEN,
C.TITLE as CHANNEL_TITLE,
C.VOTE_SINGLE as CHANNEL_VOTE_SINGLE,
C.USE_CAPTCHA as CHANNEL_USE_CAPTCHA,
DATE_FORMAT(V.TIMESTAMP_X, '%d.%m.%Y %H:%i:%s') TIMESTAMP_X,
DATE_FORMAT(V.DATE_START, '%d.%m.%Y %H:%i:%s') DATE_START,
DATE_FORMAT(V.DATE_END, '%d.%m.%Y %H:%i:%s') DATE_END,
CASE WHEN (C.ACTIVE = 'Y' AND V.ACTIVE = 'Y' AND V.DATE_START <= NOW() AND NOW() <= V.DATE_END)
THEN IF (C.VOTE_SINGLE != 'Y', 'green', 'yellow')
ELSE 'red'
END AS LAMP
FROM b_vote V
INNER JOIN b_vote_channel C ON (V.CHANNEL_ID = C.ID)
WHERE 1=1 AND ((V.ID = 1)) ORDER BY V.ID ASC;
SELECT Q.*,
DATE_FORMAT(Q.TIMESTAMP_X, '%d.%m.%Y') TIMESTAMP_X
FROM b_vote_question Q
WHERE (1=1
AND
(
(Q.ACTIVE = 'Y')
)
AND
(
Q.VOTE_ID = 1
)
)
ORDER BY Q.C_SORT ASC;
SELECT V.CHANNEL_ID, VQ.VOTE_ID, VA.*
FROM b_vote_answer VA
INNER JOIN b_vote_question VQ ON (VA.QUESTION_ID = VQ.ID)
INNER JOIN b_vote V ON (VQ.VOTE_ID = V.ID)
WHERE 1=1 AND ((VQ.VOTE_ID = 1)) AND ((VA.ACTIVE = 'Y')) AND ((VA.QUESTION_ID IN (1))) ORDER BY VA.C_SORT ASC;
SELECT VEQ.QUESTION_ID, VEA.ANSWER_ID, COUNT(VEA.ID) as COUNTER, MIN(TIMESTAMPDIFF(SECOND, VE.DATE_VOTE, NOW())) AS LAST_VOTE FROM b_vote_event VE INNER JOIN b_vote_event_question VEQ ON (VEQ.EVENT_ID = VE.ID) INNER JOIN b_vote_event_answer VEA ON (VEA.EVENT_QUESTION_ID = VEQ.ID) LEFT JOIN b_vote_user VU ON (VU.ID = VE.VOTE_USER_ID) WHERE 1=1 AND ((VE.VOTE_ID = 1)) AND ((VE.VALID = 'Y' )) GROUP BY VEQ.QUESTION_ID, VEA.ANSWER_ID ORDER BY COUNTER DESC;
SELECT TAG
FROM b_cache_tag
WHERE SITE_ID = 's1'
AND CACHE_SALT = '/e25'
AND RELATIVE_PATH = '/s1/bitrix/voting.result/1'
;
INSERT IGNORE INTO b_cache_tag (SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG)
VALUES
('s1', '/e25', '/s1/bitrix/voting.result/1', 'vote_form_channel_1'),
('s1', '/e25', '/s1/bitrix/voting.result/1', 'vote_form_vote_1'),
('s1', '/e25', '/s1/bitrix/voting.result/1', 'vote_form_question_1');
SET NAMES 'utf8';
SET collation_connection = "utf8_unicode_ci";
SELECT 'x'
FROM b_agent
WHERE
ACTIVE = 'Y'
AND NEXT_EXEC <= now()
AND (DATE_CHECK IS NULL OR DATE_CHECK <= now())
LIMIT 1
;
SELECT GET_LOCK('cff29ec0118154ee0dcf115d29478b29_agent', 0) as L;
SELECT ID, NAME, AGENT_INTERVAL, IS_PERIOD, MODULE_ID FROM b_agent WHERE ACTIVE='Y' AND NEXT_EXEC<=now() AND (DATE_CHECK IS NULL OR DATE_CHECK<=now()) ORDER BY RUNNING ASC, SORT desc;
UPDATE b_agent SET DATE_CHECK=DATE_ADD(IF(DATE_CHECK IS NULL, now(), DATE_CHECK), INTERVAL 600 SECOND) WHERE ID IN (21);
SELECT RELEASE_LOCK('cff29ec0118154ee0dcf115d29478b29_agent');
UPDATE b_agent SET RUNNING='Y' WHERE ID=21;
SELECT SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG from b_cache_tag WHERE TAG='*'
LIMIT 0, 1;
SELECT SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG from b_cache_tag WHERE TAG='**';
SELECT count(1) CNT from b_cache_tag WHERE TAG='*'
LIMIT 0, 1;
UPDATE b_cache_tag SET RELATIVE_PATH='5:1469352825' WHERE TAG='**';
UPDATE b_agent SET
NAME='\\Bitrix\\Main\\Data\\CacheEngineFiles::delayedDelete(1);',
LAST_EXEC=now(),
NEXT_EXEC=DATE_ADD(NEXT_EXEC, INTERVAL 1 SECOND),
DATE_CHECK=NULL,
RUNNING='N'
WHERE ID=21;
SELECT DISTINCT
B.*
,B.XML_ID as EXTERNAL_ID
,DATE_FORMAT(B.TIMESTAMP_X, '%d.%m.%Y %H:%i:%s') as TIMESTAMP_X
,L.DIR as LANG_DIR
,L.SERVER_NAME
FROM
b_iblock B
INNER JOIN b_lang L ON L.LID=B.LID
WHERE 1 = 1
AND ((((B.ACTIVE='Y')))) AND ((((B.ID = '2'))))
;
SELECT DISTINCT
B.*
,B.XML_ID as EXTERNAL_ID
,DATE_FORMAT(B.TIMESTAMP_X, '%d.%m.%Y %H:%i:%s') as TIMESTAMP_X
,L.DIR as LANG_DIR
,L.SERVER_NAME
FROM
b_iblock B
INNER JOIN b_lang L ON L.LID=B.LID
WHERE 1 = 1
AND ((((B.ACTIVE='Y')))) AND ((((B.ID = '2'))))
;
SELECT Q.*,
DATE_FORMAT(Q.TIMESTAMP_X, '%d.%m.%Y') TIMESTAMP_X
FROM b_vote_question Q
WHERE (1=1
AND
(
(Q.ACTIVE = 'Y')
)
AND
(
Q.VOTE_ID = 1
)
)
ORDER BY Q.C_SORT ASC;
SELECT V.CHANNEL_ID, VQ.VOTE_ID, VA.*
FROM b_vote_answer VA
INNER JOIN b_vote_question VQ ON (VA.QUESTION_ID = VQ.ID)
INNER JOIN b_vote V ON (VQ.VOTE_ID = V.ID)
WHERE 1=1 AND ((VQ.VOTE_ID = 1)) AND ((VA.ACTIVE = 'Y')) AND ((VA.QUESTION_ID IN (1))) ORDER BY VA.C_SORT ASC;
SELECT VEQ.QUESTION_ID, VEA.ANSWER_ID, COUNT(VEA.ID) as COUNTER, MIN(TIMESTAMPDIFF(SECOND, VE.DATE_VOTE, NOW())) AS LAST_VOTE FROM b_vote_event VE INNER JOIN b_vote_event_question VEQ ON (VEQ.EVENT_ID = VE.ID) INNER JOIN b_vote_event_answer VEA ON (VEA.EVENT_QUESTION_ID = VEQ.ID) LEFT JOIN b_vote_user VU ON (VU.ID = VE.VOTE_USER_ID) WHERE 1=1 AND ((VE.VOTE_ID = 1)) AND ((VE.VALID = 'Y' )) GROUP BY VEQ.QUESTION_ID, VEA.ANSWER_ID ORDER BY COUNTER DESC;
SELECT TAG
FROM b_cache_tag
WHERE SITE_ID = 's1'
AND CACHE_SALT = '/e25'
AND RELATIVE_PATH = '/s1/bitrix/voting.form'
;
INSERT IGNORE INTO b_cache_tag (SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG)
VALUES
('s1', '/e25', '/s1/bitrix/voting.form', 'vote_form_channel_1');
INSERT IGNORE INTO b_cache_tag (SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG)
VALUES
('s1', '/e25', '/s1/bitrix/voting.form', 'vote_form_vote_1');
INSERT IGNORE INTO b_cache_tag (SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG)
VALUES
('s1', '/e25', '/s1/bitrix/voting.form', 'vote_form_question_1');
SET NAMES 'utf8';
SET collation_connection = "utf8_unicode_ci";
SELECT 'x'
FROM b_agent
WHERE
ACTIVE = 'Y'
AND NEXT_EXEC <= now()
AND (DATE_CHECK IS NULL OR DATE_CHECK <= now())
LIMIT 1
;
SELECT GET_LOCK('cff29ec0118154ee0dcf115d29478b29_agent', 0) as L;
SELECT ID, NAME, AGENT_INTERVAL, IS_PERIOD, MODULE_ID FROM b_agent WHERE ACTIVE='Y' AND NEXT_EXEC<=now() AND (DATE_CHECK IS NULL OR DATE_CHECK<=now()) ORDER BY RUNNING ASC, SORT desc;
UPDATE b_agent SET DATE_CHECK=DATE_ADD(IF(DATE_CHECK IS NULL, now(), DATE_CHECK), INTERVAL 600 SECOND) WHERE ID IN (21);
SELECT RELEASE_LOCK('cff29ec0118154ee0dcf115d29478b29_agent');
UPDATE b_agent SET RUNNING='Y' WHERE ID=21;
SELECT SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG from b_cache_tag WHERE TAG='*'
LIMIT 0, 1;
DELETE FROM b_cache_tag
WHERE SITE_ID = '*'
AND CACHE_SALT = '*'
AND RELATIVE_PATH = '/bitrix/cache/s1/bitrix/voting.current/ANKETA_s1.~619977';
SELECT SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG from b_cache_tag WHERE TAG='**';
SELECT count(1) CNT from b_cache_tag WHERE TAG='*'
LIMIT 0, 1;
UPDATE b_cache_tag SET RELATIVE_PATH='4:1469352827' WHERE TAG='**';
UPDATE b_agent SET
NAME='\\Bitrix\\Main\\Data\\CacheEngineFiles::delayedDelete(1);',
LAST_EXEC=now(),
NEXT_EXEC=DATE_ADD(NEXT_EXEC, INTERVAL 1 SECOND),
DATE_CHECK=NULL,
RUNNING='N'
WHERE ID=21;
SELECT DISTINCT
B.*
,B.XML_ID as EXTERNAL_ID
,DATE_FORMAT(B.TIMESTAMP_X, '%d.%m.%Y %H:%i:%s') as TIMESTAMP_X
,L.DIR as LANG_DIR
,L.SERVER_NAME
FROM
b_iblock B
INNER JOIN b_lang L ON L.LID=B.LID
WHERE 1 = 1
AND ((((B.ACTIVE='Y')))) AND ((((B.ID = '2'))))
;
SELECT DISTINCT
B.*
,B.XML_ID as EXTERNAL_ID
,DATE_FORMAT(B.TIMESTAMP_X, '%d.%m.%Y %H:%i:%s') as TIMESTAMP_X
,L.DIR as LANG_DIR
,L.SERVER_NAME
FROM
b_iblock B
INNER JOIN b_lang L ON L.LID=B.LID
WHERE 1 = 1
AND ((((B.ACTIVE='Y')))) AND ((((B.ID = '2'))))
;
SET NAMES 'utf8';
SET collation_connection = "utf8_unicode_ci";
SELECT 'x'
FROM b_agent
WHERE
ACTIVE = 'Y'
AND NEXT_EXEC <= now()
AND (DATE_CHECK IS NULL OR DATE_CHECK <= now())
LIMIT 1
;
SELECT GET_LOCK('cff29ec0118154ee0dcf115d29478b29_agent', 0) as L;
SELECT ID, NAME, AGENT_INTERVAL, IS_PERIOD, MODULE_ID FROM b_agent WHERE ACTIVE='Y' AND NEXT_EXEC<=now() AND (DATE_CHECK IS NULL OR DATE_CHECK<=now()) ORDER BY RUNNING ASC, SORT desc;
UPDATE b_agent SET DATE_CHECK=DATE_ADD(IF(DATE_CHECK IS NULL, now(), DATE_CHECK), INTERVAL 600 SECOND) WHERE ID IN (21);
SELECT RELEASE_LOCK('cff29ec0118154ee0dcf115d29478b29_agent');
UPDATE b_agent SET RUNNING='Y' WHERE ID=21;
SELECT SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG from b_cache_tag WHERE TAG='*'
LIMIT 0, 1;
SELECT SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG from b_cache_tag WHERE TAG='**';
SELECT count(1) CNT from b_cache_tag WHERE TAG='*'
LIMIT 0, 1;
UPDATE b_agent SET
NAME='\\Bitrix\\Main\\Data\\CacheEngineFiles::delayedDelete(1);',
LAST_EXEC=now(),
NEXT_EXEC=DATE_ADD(NEXT_EXEC, INTERVAL 1 SECOND),
DATE_CHECK=NULL,
RUNNING='N'
WHERE ID=21;
DELETE FROM b_admin_notify_lang WHERE NOTIFY_ID IN (SELECT ID FROM b_admin_notify WHERE TAG like '%PHOTOGALLERY_UPLOADER%');
DELETE FROM b_admin_notify WHERE TAG like '%PHOTOGALLERY_UPLOADER%';
SELECT L.*, L.LID as ID, L.LID as LANGUAGE_ID, C.FORMAT_DATE, C.FORMAT_DATETIME, C.FORMAT_NAME, C.WEEK_START, C.CHARSET, C.DIRECTION FROM b_language L, b_culture C WHERE C.ID = L.CULTURE_ID ORDER BY L.LID ;
SELECT * FROM `b_admin_notify` LIMIT 0;
SELECT L.*, L.LID as ID, L.LID as LANGUAGE_ID, C.FORMAT_DATE, C.FORMAT_DATETIME, C.FORMAT_NAME, C.WEEK_START, C.CHARSET, C.DIRECTION FROM b_language L, b_culture C WHERE C.ID = L.CULTURE_ID ORDER BY L.LID ;
SELECT DISTINCT BS.ID AS ID,
BS.ACTIVE AS ACTIVE,
BS.CREATED_BY AS CREATED_BY,
BS.IBLOCK_SECTION_ID AS IBLOCK_SECTION_ID,
BS.NAME AS NAME,
BS.PICTURE AS PICTURE,
BS.DESCRIPTION AS DESCRIPTION,
BS.DESCRIPTION_TYPE AS DESCRIPTION_TYPE,
BS.CODE AS CODE,
BS.SOCNET_GROUP_ID AS SOCNET_GROUP_ID,
DATE_FORMAT(BS.TIMESTAMP_X, '%d.%m.%Y %H:%i:%s') AS TIMESTAMP_X
FROM b_iblock_section BS
INNER JOIN b_iblock B ON BS.IBLOCK_ID = B.ID
WHERE 1=1
AND ((((BS.IBLOCK_ID = '9'))))
AND ((((BS.CREATED_BY = '1'))))
AND (((BS.SOCNET_GROUP_ID IS NULL)))
AND (((BS.IBLOCK_SECTION_ID IS NULL)))
AND ((((B.ID = '9'))))
AND ((((B.ACTIVE='Y'))))
ORDER BY BS.TIMESTAMP_X desc , BS.ID desc ;
SELECT BP.*
FROM b_iblock_property BP
WHERE BP.ACTIVE = 'Y'
AND BP.VERSION = 2
AND BP.IBLOCK_ID = 9
ORDER BY BP.SORT ASC
;
SELECT COUNT('x') as C
FROM
b_iblock B
INNER JOIN b_lang L ON B.LID=L.LID
INNER JOIN b_iblock_element BE ON BE.IBLOCK_ID = B.ID
WHERE 1=1
AND (
((((BE.IBLOCK_ID = '9'))))
AND (
((BE.IN_SECTIONS='N' OR EXISTS (
SELECT BSE.IBLOCK_ELEMENT_ID
FROM b_iblock_section_element BSE
INNER JOIN b_iblock_section BS ON BSE.IBLOCK_SECTION_ID = BS.ID
WHERE BSE.IBLOCK_ELEMENT_ID = BE.ID
AND ((BS.ACTIVE = 'Y'))
)))
)
)
AND (((BE.WF_STATUS_ID=1 AND BE.WF_PARENT_ELEMENT_ID IS NULL)))
;
SELECT BE.ID as ID,BE.CODE as CODE,BE.IBLOCK_ID as IBLOCK_ID,BE.IBLOCK_SECTION_ID as IBLOCK_SECTION_ID,BE.NAME as NAME,BE.ACTIVE as ACTIVE,BE.DETAIL_PICTURE as DETAIL_PICTURE,BE.PREVIEW_PICTURE as PREVIEW_PICTURE,BE.PREVIEW_TEXT as PREVIEW_TEXT,BE.DETAIL_TEXT as DETAIL_TEXT,DATE_FORMAT(BE.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE,BE.CREATED_BY as CREATED_BY,BE.SHOW_COUNTER as SHOW_COUNTER,BE.SORT as SORT,BE.TAGS as TAGS,DATE_FORMAT(BE.DATE_CREATE, '%Y.%m.%d') as CREATED_DATE,BE.DETAIL_TEXT_TYPE as DETAIL_TEXT_TYPE,BE.PREVIEW_TEXT_TYPE as PREVIEW_TEXT_TYPE
FROM
b_iblock B
INNER JOIN b_lang L ON B.LID=L.LID
INNER JOIN b_iblock_element BE ON BE.IBLOCK_ID = B.ID
WHERE 1=1
AND (
((((BE.IBLOCK_ID = '9'))))
AND (
((BE.IN_SECTIONS='N' OR EXISTS (
SELECT BSE.IBLOCK_ELEMENT_ID
FROM b_iblock_section_element BSE
INNER JOIN b_iblock_section BS ON BSE.IBLOCK_SECTION_ID = BS.ID
WHERE BSE.IBLOCK_ELEMENT_ID = BE.ID
AND ((BS.ACTIVE = 'Y'))
)))
)
)
AND (((BE.WF_STATUS_ID=1 AND BE.WF_PARENT_ELEMENT_ID IS NULL)))
ORDER BY DATE_FORMAT(BE.DATE_CREATE, '%Y.%m.%d') desc ,BE.ID asc LIMIT 0, 45;
SELECT BP.*, BEP.ID as PROPERTY_VALUE_ID, BEP.VALUE, BEP.DESCRIPTION, BEPE.VALUE VALUE_ENUM, BEPE.XML_ID VALUE_XML_ID, BEPE.SORT VALUE_SORT
FROM b_iblock B
INNER JOIN b_iblock_property BP ON B.ID=BP.IBLOCK_ID
LEFT JOIN b_iblock_element_property BEP ON (BP.ID = BEP.IBLOCK_PROPERTY_ID AND BEP.IBLOCK_ELEMENT_ID = 103)
LEFT JOIN b_iblock_property_enum BEPE ON (BP.PROPERTY_TYPE = 'L' AND BEPE.ID=BEP.VALUE_ENUM AND BEPE.PROPERTY_ID=BP.ID)
WHERE B.ID = 9
AND BP.ACTIVE='Y'
ORDER BY BP.SORT asc, BP.ID asc, BEPE.SORT asc, BEP.ID asc;
SELECT DISTINCT BS.ID AS ID,
BS.LEFT_MARGIN AS LEFT_MARGIN,
BS.RIGHT_MARGIN AS RIGHT_MARGIN,
BS.NAME AS NAME,
BS.ACTIVE AS ACTIVE
FROM b_iblock_section BS
INNER JOIN b_iblock B ON BS.IBLOCK_ID = B.ID
WHERE 1=1
AND ((((BS.IBLOCK_ID = '9'))))
AND ((((BS.ID = '96'))))
AND ((((B.ID = '9'))))
;
SELECT DISTINCT
BS.*,
B.LIST_PAGE_URL,
B.SECTION_PAGE_URL,
B.IBLOCK_TYPE_ID,
B.CODE as IBLOCK_CODE,
B.XML_ID as IBLOCK_EXTERNAL_ID,
BS.XML_ID as EXTERNAL_ID,
DATE_FORMAT(BS.TIMESTAMP_X, '%d.%m.%Y %H:%i:%s') as TIMESTAMP_X,
DATE_FORMAT(BS.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE
FROM b_iblock_section BS
INNER JOIN b_iblock B ON BS.IBLOCK_ID = B.ID
WHERE 1=1
AND ((((BS.IBLOCK_ID = '9'))))
AND ((((BS.ID = '96'))))
AND ((((B.ACTIVE='Y'))))
AND ((((B.ID = '9'))))
;
SELECT STRAIGHT_JOIN COUNT(DISTINCT BE.ID) as CNT
FROM b_iblock_section BS
INNER JOIN b_iblock_section BSTEMP ON (BSTEMP.IBLOCK_ID=BS.IBLOCK_ID
AND BSTEMP.LEFT_MARGIN >= BS.LEFT_MARGIN
AND BSTEMP.RIGHT_MARGIN <= BS.RIGHT_MARGIN)
INNER JOIN b_iblock_section_element BSE ON BSE.IBLOCK_SECTION_ID=BSTEMP.ID
INNER JOIN b_iblock_element BE ON BE.ID=BSE.IBLOCK_ELEMENT_ID AND BE.IBLOCK_ID=BS.IBLOCK_ID
WHERE BS.ID=96
AND ((BE.WF_STATUS_ID=1 AND BE.WF_PARENT_ELEMENT_ID IS NULL )
OR BE.WF_NEW='Y' )
;
SELECT
BS.*,
B.LIST_PAGE_URL,
B.SECTION_PAGE_URL,
B.IBLOCK_TYPE_ID,
B.CODE as IBLOCK_CODE,
B.XML_ID as IBLOCK_EXTERNAL_ID,
BS.XML_ID as EXTERNAL_ID
FROM
b_iblock_section BS
INNER JOIN b_iblock B ON B.ID = BS.IBLOCK_ID
WHERE BS.ID=96
AND BS.IBLOCK_ID=9
;
SELECT
BS.*,
B.LIST_PAGE_URL,
B.SECTION_PAGE_URL,
B.IBLOCK_TYPE_ID,
B.CODE as IBLOCK_CODE,
B.XML_ID as IBLOCK_EXTERNAL_ID,
BS.XML_ID as EXTERNAL_ID
FROM
b_iblock_section BS
INNER JOIN b_iblock B ON B.ID = BS.IBLOCK_ID
WHERE BS.ID=95
AND BS.IBLOCK_ID=9;
#end