├── CHANGELOG.md ├── LICENSE.txt ├── README.md ├── bin └── sql-parser ├── composer.json ├── locale ├── af │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── ar │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── ast │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── az │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── be │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── be@latin │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── bg │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── bn │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── br │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── brx │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── bs │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── ca │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── ckb │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── cs │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── cy │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── da │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── de │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── el │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── en_GB │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── eo │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── es │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── et │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── eu │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── fa │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── fi │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── fil │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── fr │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── fy │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── gl │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── gu │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── he │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── hi │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── hr │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── hu │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── hy │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── ia │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── id │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── it │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── ja │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── ka │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── kk │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── km │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── kmr │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── kn │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── ko │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── ksh │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── ky │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── li │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── lt │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── lv │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── mk │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── ml │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── mn │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── ms │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── nb │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── ne │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── nl │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── pa │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── pl │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── pt │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── pt_BR │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── rcf │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── ro │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── ru │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── si │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── sk │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── sl │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── sq │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── sqlparser.pot ├── sr │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── sr@latin │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── sv │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── ta │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── te │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── th │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── tk │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── tr │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── tt │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── ug │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── uk │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── ur │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── uz │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── uz@latin │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── vi │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── vls │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po ├── zh_CN │ └── LC_MESSAGES │ │ ├── sqlparser.mo │ │ └── sqlparser.po └── zh_TW │ └── LC_MESSAGES │ ├── sqlparser.mo │ └── sqlparser.po ├── phpunit.xml.dist ├── src ├── Component.php ├── Components │ ├── AlterOperation.php │ ├── ArrayObj.php │ ├── CaseExpression.php │ ├── Condition.php │ ├── CreateDefinition.php │ ├── DataType.php │ ├── Expression.php │ ├── FunctionCall.php │ ├── GroupKeyword.php │ ├── IndexHint.php │ ├── IntoKeyword.php │ ├── JoinKeyword.php │ ├── Key.php │ ├── Limit.php │ ├── LockExpression.php │ ├── OptionsArray.php │ ├── OrderKeyword.php │ ├── OrderSortKeyword.php │ ├── ParameterDefinition.php │ ├── PartitionDefinition.php │ ├── Reference.php │ ├── RenameOperation.php │ ├── SetOperation.php │ └── WithKeyword.php ├── Context.php ├── Contexts │ ├── ContextMariaDb100000.php │ ├── ContextMariaDb100100.php │ ├── ContextMariaDb100200.php │ ├── ContextMariaDb100300.php │ ├── ContextMariaDb100400.php │ ├── ContextMariaDb100500.php │ ├── ContextMariaDb100600.php │ ├── ContextMariaDb100700.php │ ├── ContextMariaDb100800.php │ ├── ContextMariaDb100900.php │ ├── ContextMariaDb101000.php │ ├── ContextMariaDb101100.php │ ├── ContextMariaDb110000.php │ ├── ContextMariaDb110100.php │ ├── ContextMariaDb110200.php │ ├── ContextMariaDb110300.php │ ├── ContextMariaDb110400.php │ ├── ContextMariaDb110500.php │ ├── ContextMariaDb110600.php │ ├── ContextMariaDb110700.php │ ├── ContextMySql50000.php │ ├── ContextMySql50100.php │ ├── ContextMySql50500.php │ ├── ContextMySql50600.php │ ├── ContextMySql50700.php │ ├── ContextMySql80000.php │ ├── ContextMySql80100.php │ ├── ContextMySql80200.php │ ├── ContextMySql80300.php │ ├── ContextMySql80400.php │ ├── ContextMySql90000.php │ └── ContextMySql90100.php ├── Exceptions │ ├── LexerException.php │ └── ParserException.php ├── Lexer.php ├── Parseable.php ├── Parser.php ├── Parsers │ ├── AlterOperations.php │ ├── Array2d.php │ ├── ArrayObjs.php │ ├── CaseExpressions.php │ ├── Conditions.php │ ├── CreateDefinitions.php │ ├── DataTypes.php │ ├── ExpressionArray.php │ ├── Expressions.php │ ├── FunctionCalls.php │ ├── GroupKeywords.php │ ├── IndexHints.php │ ├── IntoKeywords.php │ ├── JoinKeywords.php │ ├── Keys.php │ ├── Limits.php │ ├── LockExpressions.php │ ├── OptionsArrays.php │ ├── OrderKeywords.php │ ├── ParameterDefinitions.php │ ├── PartitionDefinitions.php │ ├── References.php │ ├── RenameOperations.php │ ├── SetOperations.php │ └── UnionKeywords.php ├── Statement.php ├── Statements │ ├── AlterStatement.php │ ├── AnalyzeStatement.php │ ├── BackupStatement.php │ ├── CallStatement.php │ ├── CheckStatement.php │ ├── ChecksumStatement.php │ ├── CreateStatement.php │ ├── DeleteStatement.php │ ├── DropStatement.php │ ├── ExplainStatement.php │ ├── InsertStatement.php │ ├── KillStatement.php │ ├── LoadStatement.php │ ├── LockStatement.php │ ├── MaintenanceStatement.php │ ├── NotImplementedStatement.php │ ├── OptimizeStatement.php │ ├── PurgeStatement.php │ ├── RenameStatement.php │ ├── RepairStatement.php │ ├── ReplaceStatement.php │ ├── RestoreStatement.php │ ├── SelectStatement.php │ ├── SetStatement.php │ ├── ShowStatement.php │ ├── TransactionStatement.php │ ├── TruncateStatement.php │ ├── UpdateStatement.php │ └── WithStatement.php ├── Token.php ├── TokenType.php ├── TokensList.php ├── Tools │ ├── ContextGenerator.php │ ├── CustomJsonSerializer.php │ └── TestGenerator.php ├── Translator.php ├── UtfString.php └── Utils │ ├── BufferedQuery.php │ ├── CLI.php │ ├── Error.php │ ├── ForeignKey.php │ ├── Formatter.php │ ├── Query.php │ ├── StatementFlags.php │ ├── StatementInfo.php │ ├── StatementType.php │ └── Table.php └── tests ├── Builder ├── AlterStatementTest.php ├── CallStatementTest.php ├── CreateStatementTest.php ├── DeleteStatementTest.php ├── ExplainStatementTest.php ├── InsertStatementTest.php ├── LoadStatementTest.php ├── LockStatementTest.php ├── PurgeStatementTest.php ├── RenameStatementTest.php ├── ReplaceStatementTest.php ├── SelectStatementTest.php ├── SetStatementTest.php ├── StatementTest.php ├── TransactionStatementTest.php ├── TruncateStatementTest.php └── UpdateStatementTest.php ├── Components ├── Array2dTest.php ├── ArrayObjTest.php ├── CaseExpressionTest.php ├── ConditionTest.php ├── CreateDefinitionTest.php ├── ExpressionArrayTest.php ├── ExpressionTest.php ├── FunctionCallTest.php ├── GroupKeywordTest.php ├── IntoKeywordTest.php ├── JoinKeywordTest.php ├── KeyTest.php ├── LimitTest.php ├── LockExpressionTest.php ├── OptionsArrayTest.php ├── OrderKeywordTest.php ├── ParameterDefinitionTest.php ├── PartitionDefinitionTest.php ├── ReferenceTest.php └── RenameOperationTest.php ├── Lexer ├── ContextTest.php ├── IsMethodsTest.php ├── LexerTest.php ├── TokenTest.php └── TokensListTest.php ├── Misc ├── BugsTest.php ├── ParameterTest.php ├── TranslatorTest.php └── UtfStringTest.php ├── Parser ├── AlterStatementTest.php ├── AnalyzeStatementTest.php ├── CallStatementTest.php ├── CreateStatementTest.php ├── DeleteStatementTest.php ├── DropStatementTest.php ├── ExplainStatementTest.php ├── InsertStatementTest.php ├── KillStatementTest.php ├── LoadStatementTest.php ├── LockStatementTest.php ├── ParserLongExportsTest.php ├── ParserTest.php ├── PurgeStatementTest.php ├── RenameStatementTest.php ├── ReplaceStatementTest.php ├── RestoreStatementTest.php ├── SelectStatementTest.php ├── SetStatementTest.php ├── TransactionStatementTest.php ├── UpdateStatementTest.php └── WithStatementTest.php ├── TestCase.php ├── Tools ├── ContextGeneratorTest.php ├── contexts │ └── testContext.txt └── templates │ └── TestContext.php ├── UtfStringSerializer.php ├── Utils ├── BufferedQueryTest.php ├── CLITest.php ├── ErrorTest.php ├── FormatterTest.php ├── QueryTest.php └── TableTest.php └── data ├── bugs ├── fuzz1.in ├── fuzz1.out ├── fuzz2.in ├── fuzz2.out ├── fuzz3.in ├── fuzz3.out ├── fuzz4.in ├── fuzz4.out ├── fuzz5.in ├── fuzz5.out ├── fuzz6.in ├── fuzz6.out ├── gh14.in ├── gh14.out ├── gh16.in ├── gh16.out ├── gh202.in ├── gh202.out ├── gh234.in ├── gh234.out ├── gh317.in ├── gh317.out ├── gh412.in ├── gh412.out ├── gh478.in ├── gh478.out ├── gh492.in ├── gh492.out ├── gh496.in ├── gh496.out ├── gh498.in ├── gh498.out ├── gh499.in ├── gh499.out ├── gh508.in ├── gh508.out ├── gh511.in ├── gh511.out ├── gh9.in ├── gh9.out ├── pma11800.in ├── pma11800.out ├── pma11836.in ├── pma11836.out ├── pma11843.in ├── pma11843.out ├── pma11879.in └── pma11879.out ├── lexer ├── lex.in ├── lex.out ├── lexBool.in ├── lexBool.out ├── lexComment.in ├── lexComment.out ├── lexCommentEnd.in ├── lexCommentEnd.out ├── lexDelimiter.in ├── lexDelimiter.out ├── lexDelimiter2.in ├── lexDelimiter2.out ├── lexDelimiterErr1.in ├── lexDelimiterErr1.out ├── lexDelimiterErr2.in ├── lexDelimiterErr2.out ├── lexDelimiterErr3.in ├── lexDelimiterErr3.out ├── lexDelimiterLen.in ├── lexDelimiterLen.out ├── lexEmptyCStyleComment.in ├── lexEmptyCStyleComment.out ├── lexKeyword.in ├── lexKeyword.out ├── lexKeyword2.in ├── lexKeyword2.out ├── lexLabel1.in ├── lexLabel1.out ├── lexLabel2.in ├── lexLabel2.out ├── lexNoLabel.in ├── lexNoLabel.out ├── lexNumber.in ├── lexNumber.out ├── lexOperator.in ├── lexOperator.out ├── lexOperatorStarIsArithmetic.in ├── lexOperatorStarIsArithmetic.out ├── lexOperatorStarIsWildcard.in ├── lexOperatorStarIsWildcard.out ├── lexString.in ├── lexString.out ├── lexStringErr1.in ├── lexStringErr1.out ├── lexSymbol.in ├── lexSymbol.out ├── lexSymbolErr1.in ├── lexSymbolErr1.out ├── lexSymbolErr2.in ├── lexSymbolErr2.out ├── lexSymbolErr3.in ├── lexSymbolErr3.out ├── lexSymbolUser1.in ├── lexSymbolUser1.out ├── lexSymbolUser2.in ├── lexSymbolUser2.out ├── lexSymbolUser3.in ├── lexSymbolUser3.out ├── lexSymbolUser4_mariadb_100400.in ├── lexSymbolUser4_mariadb_100400.out ├── lexSymbolUser5_mariadb_100400.in ├── lexSymbolUser5_mariadb_100400.out ├── lexUtf8.in ├── lexUtf8.out ├── lexWhitespace.in ├── lexWhitespace.out ├── lexWildcardThenComment.in └── lexWildcardThenComment.out ├── misc ├── parseParameter.in ├── parseParameter.out ├── parseParameter2.in └── parseParameter2.out └── parser ├── parse.in ├── parse.out ├── parse2.in ├── parse2.out ├── parseAlter.in ├── parseAlter.out ├── parseAlter10.in ├── parseAlter10.out ├── parseAlter11.in ├── parseAlter11.out ├── parseAlter12.in ├── parseAlter12.out ├── parseAlter13.in ├── parseAlter13.out ├── parseAlter14.in ├── parseAlter14.out ├── parseAlter2.in ├── parseAlter2.out ├── parseAlter3.in ├── parseAlter3.out ├── parseAlter4.in ├── parseAlter4.out ├── parseAlter5.in ├── parseAlter5.out ├── parseAlter6.in ├── parseAlter6.out ├── parseAlter7.in ├── parseAlter7.out ├── parseAlter8.in ├── parseAlter8.out ├── parseAlter9.in ├── parseAlter9.out ├── parseAlterErr.in ├── parseAlterErr.out ├── parseAlterErr2.in ├── parseAlterErr2.out ├── parseAlterErr3.in ├── parseAlterErr3.out ├── parseAlterErr4.in ├── parseAlterErr4.out ├── parseAlterEvent.in ├── parseAlterEvent.out ├── parseAlterEvent2.in ├── parseAlterEvent2.out ├── parseAlterEvent3.in ├── parseAlterEvent3.out ├── parseAlterEvent4.in ├── parseAlterEvent4.out ├── parseAlterEvent5.in ├── parseAlterEvent5.out ├── parseAlterEvent6.in ├── parseAlterEvent6.out ├── parseAlterEvent7.in ├── parseAlterEvent7.out ├── parseAlterEvent8.in ├── parseAlterEvent8.out ├── parseAlterEvent9.in ├── parseAlterEvent9.out ├── parseAlterEventComplete.in ├── parseAlterEventComplete.out ├── parseAlterEventErr.in ├── parseAlterEventErr.out ├── parseAlterEventOnScheduleAt.in ├── parseAlterEventOnScheduleAt.out ├── parseAlterEventOnScheduleAt2.in ├── parseAlterEventOnScheduleAt2.out ├── parseAlterEventOnScheduleEvery.in ├── parseAlterEventOnScheduleEvery.out ├── parseAlterEventOnScheduleEvery2.in ├── parseAlterEventOnScheduleEvery2.out ├── parseAlterEventOnScheduleEvery3.in ├── parseAlterEventOnScheduleEvery3.out ├── parseAlterEventOnScheduleEvery4.in ├── parseAlterEventOnScheduleEvery4.out ├── parseAlterEventOnScheduleEvery5.in ├── parseAlterEventOnScheduleEvery5.out ├── parseAlterEventOnScheduleEvery6.in ├── parseAlterEventOnScheduleEvery6.out ├── parseAlterEventWithDefiner.in ├── parseAlterEventWithDefiner.out ├── parseAlterEventWithOtherDefiners.in ├── parseAlterEventWithOtherDefiners.out ├── parseAlterFunction1.in ├── parseAlterFunction1.out ├── parseAlterFunction2.in ├── parseAlterFunction2.out ├── parseAlterFunction3.in ├── parseAlterFunction3.out ├── parseAlterFunction4.in ├── parseAlterFunction4.out ├── parseAlterFunction5.in ├── parseAlterFunction5.out ├── parseAlterFunction6.in ├── parseAlterFunction6.out ├── parseAlterProcedure1.in ├── parseAlterProcedure1.out ├── parseAlterProcedure2.in ├── parseAlterProcedure2.out ├── parseAlterProcedure3.in ├── parseAlterProcedure3.out ├── parseAlterProcedure4.in ├── parseAlterProcedure4.out ├── parseAlterProcedure5.in ├── parseAlterProcedure5.out ├── parseAlterProcedure6.in ├── parseAlterProcedure6.out ├── parseAlterRenameColumn.in ├── parseAlterRenameColumn.out ├── parseAlterRenameColumns.in ├── parseAlterRenameColumns.out ├── parseAlterTableAddColumnWithCheck.in ├── parseAlterTableAddColumnWithCheck.out ├── parseAlterTableAddSpatialIndex1.in ├── parseAlterTableAddSpatialIndex1.out ├── parseAlterTableAddUniqueKey1.in ├── parseAlterTableAddUniqueKey1.out ├── parseAlterTableAddUniqueKey2.in ├── parseAlterTableAddUniqueKey2.out ├── parseAlterTableCharacterSet1.in ├── parseAlterTableCharacterSet1.out ├── parseAlterTableCharacterSet2.in ├── parseAlterTableCharacterSet2.out ├── parseAlterTableCharacterSet3.in ├── parseAlterTableCharacterSet3.out ├── parseAlterTableCharacterSet4.in ├── parseAlterTableCharacterSet4.out ├── parseAlterTableCharacterSet5.in ├── parseAlterTableCharacterSet5.out ├── parseAlterTableCharacterSet6.in ├── parseAlterTableCharacterSet6.out ├── parseAlterTableCharacterSet7.in ├── parseAlterTableCharacterSet7.out ├── parseAlterTableCoalescePartition.in ├── parseAlterTableCoalescePartition.out ├── parseAlterTableDropAddIndex1.in ├── parseAlterTableDropAddIndex1.out ├── parseAlterTableDropColumn1.in ├── parseAlterTableDropColumn1.out ├── parseAlterTableModifyColumn.in ├── parseAlterTableModifyColumn.out ├── parseAlterTableModifyColumnEnum1.in ├── parseAlterTableModifyColumnEnum1.out ├── parseAlterTableModifyColumnEnum2.in ├── parseAlterTableModifyColumnEnum2.out ├── parseAlterTableModifyColumnEnum3.in ├── parseAlterTableModifyColumnEnum3.out ├── parseAlterTablePartitionByRange1.in ├── parseAlterTablePartitionByRange1.out ├── parseAlterTablePartitionByRange2.in ├── parseAlterTablePartitionByRange2.out ├── parseAlterTableRenameIndex1.in ├── parseAlterTableRenameIndex1.out ├── parseAlterTableRenameIndex2.in ├── parseAlterTableRenameIndex2.out ├── parseAlterTableRenameKey1.in ├── parseAlterTableRenameKey1.out ├── parseAlterTableRenameKey2.in ├── parseAlterTableRenameKey2.out ├── parseAlterTableSetAutoIncrementError.in ├── parseAlterTableSetAutoIncrementError.out ├── parseAlterUser.in ├── parseAlterUser.out ├── parseAlterUser1.in ├── parseAlterUser1.out ├── parseAlterUser10.in ├── parseAlterUser10.out ├── parseAlterUser2.in ├── parseAlterUser2.out ├── parseAlterUser3.in ├── parseAlterUser3.out ├── parseAlterUser4.in ├── parseAlterUser4.out ├── parseAlterUser5.in ├── parseAlterUser5.out ├── parseAlterUser6.in ├── parseAlterUser6.out ├── parseAlterUser7.in ├── parseAlterUser7.out ├── parseAlterUser8.in ├── parseAlterUser8.out ├── parseAlterUser9.in ├── parseAlterUser9.out ├── parseAlterWithInvisible.in ├── parseAlterWithInvisible.out ├── parseAnalyzeErr1.in ├── parseAnalyzeErr1.out ├── parseAnalyzeErr2.in ├── parseAnalyzeErr2.out ├── parseAnalyzeTable.in ├── parseAnalyzeTable.out ├── parseAnalyzeTable1.in ├── parseAnalyzeTable1.out ├── parseArrayErr1.in ├── parseArrayErr1.out ├── parseArrayErr3.in ├── parseArrayErr3.out ├── parseCall.in ├── parseCall.out ├── parseCall2.in ├── parseCall2.out ├── parseCall3.in ├── parseCall3.out ├── parseCall4.in ├── parseCall4.out ├── parseCall5.in ├── parseCall5.out ├── parseCreateDatabase.in ├── parseCreateDatabase.out ├── parseCreateDatabaseErr.in ├── parseCreateDatabaseErr.out ├── parseCreateFunction.in ├── parseCreateFunction.out ├── parseCreateFunctionErr1.in ├── parseCreateFunctionErr1.out ├── parseCreateFunctionErr2.in ├── parseCreateFunctionErr2.out ├── parseCreateFunctionErr3.in ├── parseCreateFunctionErr3.out ├── parseCreateOrReplaceView1.in ├── parseCreateOrReplaceView1.out ├── parseCreateProcedure.in ├── parseCreateProcedure.out ├── parseCreateProcedure1.in ├── parseCreateProcedure1.out ├── parseCreateProcedure2.in ├── parseCreateProcedure2.out ├── parseCreateProcedure3.in ├── parseCreateProcedure3.out ├── parseCreateProcedure4.in ├── parseCreateProcedure4.out ├── parseCreateSchema.in ├── parseCreateSchema.out ├── parseCreateSchemaErr.in ├── parseCreateSchemaErr.out ├── parseCreateTable.in ├── parseCreateTable.out ├── parseCreateTable10.in ├── parseCreateTable10.out ├── parseCreateTable11.in ├── parseCreateTable11.out ├── parseCreateTable12.in ├── parseCreateTable12.out ├── parseCreateTable13.in ├── parseCreateTable13.out ├── parseCreateTable14.in ├── parseCreateTable14.out ├── parseCreateTable15.in ├── parseCreateTable15.out ├── parseCreateTable16.in ├── parseCreateTable16.out ├── parseCreateTable17.in ├── parseCreateTable17.out ├── parseCreateTable18.in ├── parseCreateTable18.out ├── parseCreateTable2.in ├── parseCreateTable2.out ├── parseCreateTable3.in ├── parseCreateTable3.out ├── parseCreateTable4.in ├── parseCreateTable4.out ├── parseCreateTable5.in ├── parseCreateTable5.out ├── parseCreateTable6.in ├── parseCreateTable6.out ├── parseCreateTable7.in ├── parseCreateTable7.out ├── parseCreateTable8.in ├── parseCreateTable8.out ├── parseCreateTable9.in ├── parseCreateTable9.out ├── parseCreateTableAsSelect.in ├── parseCreateTableAsSelect.out ├── parseCreateTableEnforcedCheck.in ├── parseCreateTableEnforcedCheck.out ├── parseCreateTableErr1.in ├── parseCreateTableErr1.out ├── parseCreateTableErr2.in ├── parseCreateTableErr2.out ├── parseCreateTableErr3.in ├── parseCreateTableErr3.out ├── parseCreateTableErr4.in ├── parseCreateTableErr4.out ├── parseCreateTableErr5.in ├── parseCreateTableErr5.out ├── parseCreateTableLike.in ├── parseCreateTableLike.out ├── parseCreateTableNotEnforcedCheck.in ├── parseCreateTableNotEnforcedCheck.out ├── parseCreateTableSRID.in ├── parseCreateTableSRID.out ├── parseCreateTableSelect.in ├── parseCreateTableSelect.out ├── parseCreateTableSpatial.in ├── parseCreateTableSpatial.out ├── parseCreateTableTimestampWithPrecision.in ├── parseCreateTableTimestampWithPrecision.out ├── parseCreateTableWithInvisibleKey.in ├── parseCreateTableWithInvisibleKey.out ├── parseCreateTableWithParser.in ├── parseCreateTableWithParser.out ├── parseCreateTrigger.in ├── parseCreateTrigger.out ├── parseCreateUser1.in ├── parseCreateUser1.out ├── parseCreateUser2.in ├── parseCreateUser2.out ├── parseCreateView.in ├── parseCreateView.out ├── parseCreateView2.in ├── parseCreateView2.out ├── parseCreateView3.in ├── parseCreateView3.out ├── parseCreateView4.in ├── parseCreateView4.out ├── parseCreateView5.in ├── parseCreateView5.out ├── parseCreateViewAsWithAs.in ├── parseCreateViewAsWithAs.out ├── parseCreateViewMultiple.in ├── parseCreateViewMultiple.out ├── parseCreateViewWithQuotes.in ├── parseCreateViewWithQuotes.out ├── parseCreateViewWithUnion.in ├── parseCreateViewWithUnion.out ├── parseCreateViewWithWrongSyntax.in ├── parseCreateViewWithWrongSyntax.out ├── parseCreateViewWithoutQuotes.in ├── parseCreateViewWithoutQuotes.out ├── parseDelete.in ├── parseDelete.out ├── parseDelete10.in ├── parseDelete10.out ├── parseDelete11.in ├── parseDelete11.out ├── parseDelete12.in ├── parseDelete12.out ├── parseDelete13.in ├── parseDelete13.out ├── parseDelete2.in ├── parseDelete2.out ├── parseDelete3.in ├── parseDelete3.out ├── parseDelete4.in ├── parseDelete4.out ├── parseDelete5.in ├── parseDelete5.out ├── parseDelete6.in ├── parseDelete6.out ├── parseDelete7.in ├── parseDelete7.out ├── parseDelete8.in ├── parseDelete8.out ├── parseDelete9.in ├── parseDelete9.out ├── parseDeleteErr1.in ├── parseDeleteErr1.out ├── parseDeleteErr10.in ├── parseDeleteErr10.out ├── parseDeleteErr11.in ├── parseDeleteErr11.out ├── parseDeleteErr12.in ├── parseDeleteErr12.out ├── parseDeleteErr2.in ├── parseDeleteErr2.out ├── parseDeleteErr3.in ├── parseDeleteErr3.out ├── parseDeleteErr4.in ├── parseDeleteErr4.out ├── parseDeleteErr5.in ├── parseDeleteErr5.out ├── parseDeleteErr6.in ├── parseDeleteErr6.out ├── parseDeleteErr7.in ├── parseDeleteErr7.out ├── parseDeleteErr8.in ├── parseDeleteErr8.out ├── parseDeleteErr9.in ├── parseDeleteErr9.out ├── parseDeleteJoin.in ├── parseDeleteJoin.out ├── parseDelimiter.in ├── parseDelimiter.out ├── parseDrop.in ├── parseDrop.out ├── parseDrop2.in ├── parseDrop2.out ├── parseExplain.in ├── parseExplain.out ├── parseExplain1.in ├── parseExplain1.out ├── parseExplain10.in ├── parseExplain10.out ├── parseExplain11.in ├── parseExplain11.out ├── parseExplain12.in ├── parseExplain12.out ├── parseExplain13.in ├── parseExplain13.out ├── parseExplain14.in ├── parseExplain14.out ├── parseExplain2.in ├── parseExplain2.out ├── parseExplain3.in ├── parseExplain3.out ├── parseExplain4.in ├── parseExplain4.out ├── parseExplain5.in ├── parseExplain5.out ├── parseExplain6.in ├── parseExplain6.out ├── parseExplain7.in ├── parseExplain7.out ├── parseExplain8.in ├── parseExplain8.out ├── parseExplain9.in ├── parseExplain9.out ├── parseExplainErr.in ├── parseExplainErr.out ├── parseExplainErr1.in ├── parseExplainErr1.out ├── parseExplainErr2.in ├── parseExplainErr2.out ├── parseExplainErr3.in ├── parseExplainErr3.out ├── parseInsert.in ├── parseInsert.out ├── parseInsertErr.in ├── parseInsertErr.out ├── parseInsertErr2.in ├── parseInsertErr2.out ├── parseInsertFunction.in ├── parseInsertFunction.out ├── parseInsertIntoErr.in ├── parseInsertIntoErr.out ├── parseInsertIntoSet.in ├── parseInsertIntoSet.out ├── parseInsertOnDuplicateKey.in ├── parseInsertOnDuplicateKey.out ├── parseInsertOnDuplicateKeyErr.in ├── parseInsertOnDuplicateKeyErr.out ├── parseInsertSelect.in ├── parseInsertSelect.out ├── parseInsertSelectOnDuplicateKey.in ├── parseInsertSelectOnDuplicateKey.out ├── parseInsertSet.in ├── parseInsertSet.out ├── parseInsertSetOnDuplicateKey.in ├── parseInsertSetOnDuplicateKey.out ├── parseKill.in ├── parseKill.out ├── parseKill2.in ├── parseKill2.out ├── parseKill3.in ├── parseKill3.out ├── parseKillConnection.in ├── parseKillConnection.out ├── parseKillErr1.in ├── parseKillErr1.out ├── parseKillErr2.in ├── parseKillErr2.out ├── parseKillErr3.in ├── parseKillErr3.out ├── parseKillErr4.in ├── parseKillErr4.out ├── parseKillQuery.in ├── parseKillQuery.out ├── parseLimitErr1.in ├── parseLimitErr1.out ├── parseLimitErr2.in ├── parseLimitErr2.out ├── parseLoad1.in ├── parseLoad1.out ├── parseLoad2.in ├── parseLoad2.out ├── parseLoad3.in ├── parseLoad3.out ├── parseLoad4.in ├── parseLoad4.out ├── parseLoad5.in ├── parseLoad5.out ├── parseLoad6.in ├── parseLoad6.out ├── parseLoad7.in ├── parseLoad7.out ├── parseLoad8.in ├── parseLoad8.out ├── parseLoadErr1.in ├── parseLoadErr1.out ├── parseLoadErr2.in ├── parseLoadErr2.out ├── parseLoadErr3.in ├── parseLoadErr3.out ├── parseLoadErr4.in ├── parseLoadErr4.out ├── parseLoadErr5.in ├── parseLoadErr5.out ├── parseLoadErr6.in ├── parseLoadErr6.out ├── parseLock1.in ├── parseLock1.out ├── parseLock2.in ├── parseLock2.out ├── parseLock3.in ├── parseLock3.out ├── parseLock4.in ├── parseLock4.out ├── parseLock5.in ├── parseLock5.out ├── parseLock6.in ├── parseLock6.out ├── parseLockErr1.in ├── parseLockErr1.out ├── parseLockErr10.in ├── parseLockErr10.out ├── parseLockErr2.in ├── parseLockErr2.out ├── parseLockErr3.in ├── parseLockErr3.out ├── parseLockErr4.in ├── parseLockErr4.out ├── parseLockErr5.in ├── parseLockErr5.out ├── parseLockErr6.in ├── parseLockErr6.out ├── parseLockErr7.in ├── parseLockErr7.out ├── parseLockErr8.in ├── parseLockErr8.out ├── parseLockErr9.in ├── parseLockErr9.out ├── parsePurge.in ├── parsePurge.out ├── parsePurge2.in ├── parsePurge2.out ├── parsePurge3.in ├── parsePurge3.out ├── parsePurge4.in ├── parsePurge4.out ├── parsePurgeErr.in ├── parsePurgeErr.out ├── parsePurgeErr2.in ├── parsePurgeErr2.out ├── parsePurgeErr3.in ├── parsePurgeErr3.out ├── parseRename.in ├── parseRename.out ├── parseRename2.in ├── parseRename2.out ├── parseRenameErr1.in ├── parseRenameErr1.out ├── parseRenameErr2.in ├── parseRenameErr2.out ├── parseRenameErr3.in ├── parseRenameErr3.out ├── parseRenameErr4.in ├── parseRenameErr4.out ├── parseRenameErr5.in ├── parseRenameErr5.out ├── parseReplace.in ├── parseReplace.out ├── parseReplace2.in ├── parseReplace2.out ├── parseReplaceErr.in ├── parseReplaceErr.out ├── parseReplaceErr2.in ├── parseReplaceErr2.out ├── parseReplaceErr3.in ├── parseReplaceErr3.out ├── parseReplaceIntoErr.in ├── parseReplaceIntoErr.out ├── parseReplaceSelect.in ├── parseReplaceSelect.out ├── parseReplaceSet.in ├── parseReplaceSet.out ├── parseReplaceValues.in ├── parseReplaceValues.out ├── parseRestore.in ├── parseRestore.out ├── parseSelect.in ├── parseSelect.out ├── parseSelect10.in ├── parseSelect10.out ├── parseSelect11.in ├── parseSelect11.out ├── parseSelect12.in ├── parseSelect12.out ├── parseSelect13.in ├── parseSelect13.out ├── parseSelect14.in ├── parseSelect14.out ├── parseSelect15.in ├── parseSelect15.out ├── parseSelect16.in ├── parseSelect16.out ├── parseSelect2.in ├── parseSelect2.out ├── parseSelect3.in ├── parseSelect3.out ├── parseSelect4.in ├── parseSelect4.out ├── parseSelect5.in ├── parseSelect5.out ├── parseSelect6.in ├── parseSelect6.out ├── parseSelect7.in ├── parseSelect7.out ├── parseSelect8.in ├── parseSelect8.out ├── parseSelect9.in ├── parseSelect9.out ├── parseSelectAggregateWithPartitionAndAlias.in ├── parseSelectAggregateWithPartitionAndAlias.out ├── parseSelectCase1.in ├── parseSelectCase1.out ├── parseSelectCase2.in ├── parseSelectCase2.out ├── parseSelectCase3.in ├── parseSelectCase3.out ├── parseSelectCase4.in ├── parseSelectCase4.out ├── parseSelectCase5.in ├── parseSelectCase5.out ├── parseSelectCaseAlias1.in ├── parseSelectCaseAlias1.out ├── parseSelectCaseAlias2.in ├── parseSelectCaseAlias2.out ├── parseSelectCaseAlias3.in ├── parseSelectCaseAlias3.out ├── parseSelectCaseAlias4.in ├── parseSelectCaseAlias4.out ├── parseSelectCaseAlias5.in ├── parseSelectCaseAlias5.out ├── parseSelectCaseAlias6.in ├── parseSelectCaseAlias6.out ├── parseSelectCaseAliasErr1.in ├── parseSelectCaseAliasErr1.out ├── parseSelectCaseAliasErr2.in ├── parseSelectCaseAliasErr2.out ├── parseSelectCaseAliasErr3.in ├── parseSelectCaseAliasErr3.out ├── parseSelectCaseAliasErr4.in ├── parseSelectCaseAliasErr4.out ├── parseSelectCaseErr1.in ├── parseSelectCaseErr1.out ├── parseSelectCaseErr2.in ├── parseSelectCaseErr2.out ├── parseSelectCaseErr3.in ├── parseSelectCaseErr3.out ├── parseSelectCaseErr4.in ├── parseSelectCaseErr4.out ├── parseSelectCaseErr5.in ├── parseSelectCaseErr5.out ├── parseSelectEndOptions1.in ├── parseSelectEndOptions1.out ├── parseSelectEndOptions2.in ├── parseSelectEndOptions2.out ├── parseSelectEndOptionsErr.in ├── parseSelectEndOptionsErr.out ├── parseSelectErr1.in ├── parseSelectErr1.out ├── parseSelectErr2.in ├── parseSelectErr2.out ├── parseSelectExists.in ├── parseSelectExists.out ├── parseSelectGroupBy.in ├── parseSelectGroupBy.out ├── parseSelectGroupByErr.in ├── parseSelectGroupByErr.out ├── parseSelectGroupByWithComments.in ├── parseSelectGroupByWithComments.out ├── parseSelectIndexHint1.in ├── parseSelectIndexHint1.out ├── parseSelectIndexHint2.in ├── parseSelectIndexHint2.out ├── parseSelectIndexHintErr1.in ├── parseSelectIndexHintErr1.out ├── parseSelectIndexHintErr2.in ├── parseSelectIndexHintErr2.out ├── parseSelectIndexHintErr3.in ├── parseSelectIndexHintErr3.out ├── parseSelectIndexHintErr4.in ├── parseSelectIndexHintErr4.out ├── parseSelectIntoOptions1.in ├── parseSelectIntoOptions1.out ├── parseSelectIntoOptions2.in ├── parseSelectIntoOptions2.out ├── parseSelectIntoOptions3.in ├── parseSelectIntoOptions3.out ├── parseSelectJoinCross.in ├── parseSelectJoinCross.out ├── parseSelectJoinMultiple.in ├── parseSelectJoinMultiple.out ├── parseSelectJoinMultiple2.in ├── parseSelectJoinMultiple2.out ├── parseSelectJoinNatural.in ├── parseSelectJoinNatural.out ├── parseSelectJoinNaturalLeft.in ├── parseSelectJoinNaturalLeft.out ├── parseSelectJoinNaturalLeftOuter.in ├── parseSelectJoinNaturalLeftOuter.out ├── parseSelectJoinNaturalRight.in ├── parseSelectJoinNaturalRight.out ├── parseSelectJoinNaturalRightOuter.in ├── parseSelectJoinNaturalRightOuter.out ├── parseSelectJoinStraight.in ├── parseSelectJoinStraight.out ├── parseSelectNested.in ├── parseSelectNested.out ├── parseSelectOrderByComment.in ├── parseSelectOrderByComment.out ├── parseSelectOrderByIsNull.in ├── parseSelectOrderByIsNull.out ├── parseSelectOverAlias_mariadb_100600.in ├── parseSelectOverAlias_mariadb_100600.out ├── parseSelectUnion.in ├── parseSelectUnion.out ├── parseSelectUnion2.in ├── parseSelectUnion2.out ├── parseSelectWhere.in ├── parseSelectWhere.out ├── parseSelectWhereCollate.in ├── parseSelectWhereCollate.out ├── parseSelectWithParenthesis.in ├── parseSelectWithParenthesis.out ├── parseSelectWrongOrder.in ├── parseSelectWrongOrder.out ├── parseSelectWrongOrder2.in ├── parseSelectWrongOrder2.out ├── parseSetCharacterSet.in ├── parseSetCharacterSet.out ├── parseSetCharacterSetError.in ├── parseSetCharacterSetError.out ├── parseSetCharset.in ├── parseSetCharset.out ├── parseSetCharsetError.in ├── parseSetCharsetError.out ├── parseSetError1.in ├── parseSetError1.out ├── parseSetGlobalVariable.in ├── parseSetGlobalVariable.out ├── parseSetNames.in ├── parseSetNames.out ├── parseSetNames2.in ├── parseSetNames2.out ├── parseSetNames3.in ├── parseSetNames3.out ├── parseSetNamesError.in ├── parseSetNamesError.out ├── parseSetNamesError2.in ├── parseSetNamesError2.out ├── parseSetNamesError3.in ├── parseSetNamesError3.out ├── parseSetVariable.in ├── parseSetVariable.out ├── parseSetVariable2.in ├── parseSetVariable2.out ├── parseTable1.in ├── parseTable1.out ├── parseTransaction.in ├── parseTransaction.out ├── parseTransaction2.in ├── parseTransaction2.out ├── parseTransaction3.in ├── parseTransaction3.out ├── parseTransaction4.in ├── parseTransaction4.out ├── parseTransaction5.in ├── parseTransaction5.out ├── parseTransaction6.in ├── parseTransaction6.out ├── parseTransaction7.in ├── parseTransaction7.out ├── parseTransactionErr1.in ├── parseTransactionErr1.out ├── parseUnlock1.in ├── parseUnlock1.out ├── parseUnlockErr1.in ├── parseUnlockErr1.out ├── parseUpdate1.in ├── parseUpdate1.out ├── parseUpdate2.in ├── parseUpdate2.out ├── parseUpdate3.in ├── parseUpdate3.out ├── parseUpdate4.in ├── parseUpdate4.out ├── parseUpdate5.in ├── parseUpdate5.out ├── parseUpdate6.in ├── parseUpdate6.out ├── parseUpdate7.in ├── parseUpdate7.out ├── parseUpdateEmptySet.in ├── parseUpdateEmptySet.out ├── parseUpdateErr.in ├── parseUpdateErr.out ├── parseWhere0.in ├── parseWhere0.out ├── parseWithStatement.in ├── parseWithStatement.out ├── parseWithStatement1.in ├── parseWithStatement1.out ├── parseWithStatement2.in ├── parseWithStatement2.out ├── parseWithStatement3.in ├── parseWithStatement3.out ├── parseWithStatement4.in ├── parseWithStatement4.out ├── parseWithStatement5.in ├── parseWithStatement5.out ├── parseWithStatement6.in ├── parseWithStatement6.out ├── parseWithStatement7.in ├── parseWithStatement7.out ├── parseWithStatementErr.in ├── parseWithStatementErr.out ├── parseWithStatementErr1.in ├── parseWithStatementErr1.out ├── parseWithStatementErr2.in ├── parseWithStatementErr2.out ├── parseWithStatementErr3.in ├── parseWithStatementErr3.out ├── parseWithStatementErr4.in ├── parseWithStatementErr4.out ├── parseWithStatementErr5.in ├── parseWithStatementErr5.out ├── parseWithStatementErr6.in ├── parseWithStatementErr6.out ├── parseWithStatementErr7.in ├── parseWithStatementErr7.out ├── parseWithStatementErr8.in ├── parseWithStatementErr8.out ├── parsephpMyAdminExport1.in └── parsephpMyAdminExport1.out /bin/sql-parser: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env php 2 | run()); 32 | -------------------------------------------------------------------------------- /locale/af/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/af/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/ar/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/ar/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/ast/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/ast/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/az/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/az/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/be/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/be/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/be@latin/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/be@latin/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/bg/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/bg/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/bn/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/bn/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/br/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/br/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/brx/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/brx/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/bs/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/bs/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/ca/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/ca/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/ckb/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/ckb/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/cs/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/cs/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/cy/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/cy/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/da/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/da/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/de/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/de/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/el/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/el/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/en_GB/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/en_GB/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/eo/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/eo/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/es/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/es/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/et/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/et/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/eu/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/eu/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/fa/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/fa/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/fi/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/fi/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/fil/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/fil/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/fr/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/fr/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/fy/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/fy/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/gl/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/gl/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/gu/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/gu/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/he/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/he/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/hi/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/hi/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/hr/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/hr/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/hu/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/hu/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/hy/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/hy/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/ia/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/ia/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/id/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/id/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/it/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/it/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/ja/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/ja/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/ka/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/ka/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/kk/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/kk/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/km/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/km/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/kmr/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/kmr/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/kn/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/kn/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/ko/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/ko/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/ksh/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/ksh/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/ky/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/ky/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/li/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/li/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/lt/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/lt/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/lv/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/lv/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/mk/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/mk/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/ml/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/ml/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/mn/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/mn/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/ms/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/ms/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/nb/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/nb/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/ne/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/ne/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/nl/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/nl/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/pa/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/pa/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/pl/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/pl/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/pt/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/pt/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/pt_BR/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/pt_BR/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/rcf/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/rcf/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/ro/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/ro/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/ru/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/ru/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/si/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/si/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/sk/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/sk/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/sl/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/sl/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/sq/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/sq/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/sr/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/sr/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/sr@latin/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/sr@latin/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/sv/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/sv/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/ta/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/ta/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/te/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/te/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/th/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/th/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/tk/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/tk/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/tr/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/tr/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/tt/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/tt/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/ug/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/ug/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/uk/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/uk/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/ur/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/ur/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/uz/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/uz/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/uz@latin/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/uz@latin/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/vi/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/vi/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/vls/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/vls/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/zh_CN/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/zh_CN/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /locale/zh_TW/LC_MESSAGES/sqlparser.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpmyadmin/sql-parser/87314c214c1caedddc4157beb90d2c0cc486eee9/locale/zh_TW/LC_MESSAGES/sqlparser.mo -------------------------------------------------------------------------------- /src/Component.php: -------------------------------------------------------------------------------- 1 | raw = $raw; 37 | $this->values = $values; 38 | } 39 | 40 | public function build(): string 41 | { 42 | if ($this->raw !== []) { 43 | return '(' . implode(', ', $this->raw) . ')'; 44 | } 45 | 46 | return '(' . implode(', ', $this->values) . ')'; 47 | } 48 | 49 | public function __toString(): string 50 | { 51 | return $this->build(); 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/Components/Condition.php: -------------------------------------------------------------------------------- 1 | 17 | */ 18 | public array $identifiers = []; 19 | 20 | /** 21 | * Whether this component is an operator. 22 | */ 23 | public bool $isOperator = false; 24 | 25 | /** 26 | * The condition. 27 | */ 28 | public string $expr; 29 | 30 | public string $leftOperand = ''; 31 | public string $operator = ''; 32 | public string $rightOperand = ''; 33 | 34 | /** @param string $expr the condition or the operator */ 35 | public function __construct(string|null $expr = null) 36 | { 37 | $this->expr = trim((string) $expr); 38 | } 39 | 40 | public function build(): string 41 | { 42 | return $this->expr; 43 | } 44 | 45 | public function __toString(): string 46 | { 47 | return $this->build(); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/Components/FunctionCall.php: -------------------------------------------------------------------------------- 1 | name = $name; 33 | if (is_array($parameters)) { 34 | $this->parameters = new ArrayObj($parameters); 35 | } elseif ($parameters instanceof ArrayObj) { 36 | $this->parameters = $parameters; 37 | } 38 | } 39 | 40 | public function build(): string 41 | { 42 | return $this->name . $this->parameters; 43 | } 44 | 45 | public function __toString(): string 46 | { 47 | return $this->build(); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/Components/GroupKeyword.php: -------------------------------------------------------------------------------- 1 | expr = $expr; 27 | } 28 | 29 | public function build(): string 30 | { 31 | return trim((string) $this->expr); 32 | } 33 | 34 | public function __toString(): string 35 | { 36 | return $this->build(); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/Components/IndexHint.php: -------------------------------------------------------------------------------- 1 | type . ' ' . $this->indexOrKey . ' '; 32 | if ($this->for !== null) { 33 | $ret .= 'FOR ' . $this->for . ' '; 34 | } 35 | 36 | return $ret . Expressions::buildAll($this->indexes); 37 | } 38 | 39 | public function __toString(): string 40 | { 41 | return $this->build(); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/Components/Limit.php: -------------------------------------------------------------------------------- 1 | rowCount = $rowCount; 31 | $this->offset = $offset; 32 | } 33 | 34 | public function build(): string 35 | { 36 | return $this->offset . ', ' . $this->rowCount; 37 | } 38 | 39 | public function __toString(): string 40 | { 41 | return $this->build(); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/Components/LockExpression.php: -------------------------------------------------------------------------------- 1 | table . ' ' . $this->type; 29 | } 30 | 31 | /** @param LockExpression[] $component the component to be built */ 32 | public static function buildAll(array $component): string 33 | { 34 | return implode(', ', $component); 35 | } 36 | 37 | public function __toString(): string 38 | { 39 | return $this->build(); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/Components/OrderKeyword.php: -------------------------------------------------------------------------------- 1 | expr = $expr; 31 | $this->type = $type; 32 | } 33 | 34 | public function build(): string 35 | { 36 | return $this->expr . ' ' . $this->type->value; 37 | } 38 | 39 | public function __toString(): string 40 | { 41 | return $this->build(); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/Components/OrderSortKeyword.php: -------------------------------------------------------------------------------- 1 | old = $old; 31 | $this->new = $new; 32 | } 33 | 34 | public function build(): string 35 | { 36 | return $this->old . ' TO ' . $this->new; 37 | } 38 | 39 | public function __toString(): string 40 | { 41 | return $this->build(); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/Components/SetOperation.php: -------------------------------------------------------------------------------- 1 | column = $column; 28 | $this->value = $value; 29 | } 30 | 31 | public function build(): string 32 | { 33 | return $this->column . ' = ' . $this->value; 34 | } 35 | 36 | public function __toString(): string 37 | { 38 | return $this->build(); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/Components/WithKeyword.php: -------------------------------------------------------------------------------- 1 | statement)) { 29 | throw new RuntimeException('No statement inside WITH'); 30 | } 31 | 32 | $str = $this->name; 33 | 34 | if ($this->columns) { 35 | $str .= ArrayObjs::buildAll($this->columns); 36 | } 37 | 38 | $str .= ' AS ('; 39 | 40 | foreach ($this->statement->statements as $statement) { 41 | $str .= $statement->build(); 42 | } 43 | 44 | $str .= ')'; 45 | 46 | return $str; 47 | } 48 | 49 | public function __toString(): string 50 | { 51 | return $this->build(); 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/Exceptions/LexerException.php: -------------------------------------------------------------------------------- 1 | ch = $ch; 35 | $this->pos = $pos; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/Exceptions/ParserException.php: -------------------------------------------------------------------------------- 1 | token = $token; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Parseable.php: -------------------------------------------------------------------------------- 1 | $options parameters for parsing 18 | * 19 | * @return Component|Component[]|null 20 | */ 21 | public static function parse(Parser $parser, TokensList $list, array $options = []): Component|array|null; 22 | } 23 | -------------------------------------------------------------------------------- /src/Parsers/UnionKeywords.php: -------------------------------------------------------------------------------- 1 | $options parameters for parsing 27 | * 28 | * @throws RuntimeException not implemented yet. 29 | */ 30 | public static function parse(Parser $parser, TokensList $list, array $options = []): never 31 | { 32 | throw new RuntimeException(Translator::gettext('Not implemented yet.')); 33 | } 34 | 35 | /** @param list $component the component to be built */ 36 | public static function buildAll(array $component): string 37 | { 38 | $tmp = []; 39 | foreach ($component as $componentPart) { 40 | $tmp[] = $componentPart[0] . ' ' . $componentPart[1]; 41 | } 42 | 43 | return implode(' ', $tmp); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/Statements/AnalyzeStatement.php: -------------------------------------------------------------------------------- 1 | > 22 | * @psalm-var array 1, 26 | 27 | 'NO_WRITE_TO_BINLOG' => 2, 28 | 'LOCAL' => 3, 29 | ]; 30 | 31 | /** 32 | * Analyzed tables. 33 | * 34 | * @var Expression[]|null 35 | */ 36 | public array|null $tables = null; 37 | } 38 | -------------------------------------------------------------------------------- /src/Statements/BackupStatement.php: -------------------------------------------------------------------------------- 1 | > 18 | * @psalm-var array 1, 22 | 23 | 'NO_WRITE_TO_BINLOG' => 2, 24 | 'LOCAL' => 3, 25 | 26 | 'TO' => [ 27 | 4, 28 | 'var', 29 | ], 30 | ]; 31 | } 32 | -------------------------------------------------------------------------------- /src/Statements/CallStatement.php: -------------------------------------------------------------------------------- 1 | call->name . '(' 34 | . ($this->call->parameters ? implode(',', $this->call->parameters->raw) : '') . ')'; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/Statements/CheckStatement.php: -------------------------------------------------------------------------------- 1 | > 18 | * @psalm-var array 1, 22 | 23 | 'FOR UPGRADE' => 2, 24 | 'QUICK' => 3, 25 | 'FAST' => 4, 26 | 'MEDIUM' => 5, 27 | 'EXTENDED' => 6, 28 | 'CHANGED' => 7, 29 | ]; 30 | } 31 | -------------------------------------------------------------------------------- /src/Statements/ChecksumStatement.php: -------------------------------------------------------------------------------- 1 | > 18 | * @psalm-var array 1, 22 | 23 | 'QUICK' => 2, 24 | 'EXTENDED' => 3, 25 | ]; 26 | } 27 | -------------------------------------------------------------------------------- /src/Statements/OptimizeStatement.php: -------------------------------------------------------------------------------- 1 | > 22 | * @psalm-var array 1, 26 | 27 | 'NO_WRITE_TO_BINLOG' => 2, 28 | 'LOCAL' => 3, 29 | ]; 30 | 31 | /** 32 | * Optimized tables. 33 | * 34 | * @var Expression[]|null 35 | */ 36 | public array|null $tables = null; 37 | } 38 | -------------------------------------------------------------------------------- /src/Statements/RepairStatement.php: -------------------------------------------------------------------------------- 1 | > 20 | * @psalm-var array 1, 24 | 25 | 'NO_WRITE_TO_BINLOG' => 2, 26 | 'LOCAL' => 3, 27 | 28 | 'QUICK' => 4, 29 | 'EXTENDED' => 5, 30 | 'USE_FRM' => 6, 31 | ]; 32 | } 33 | -------------------------------------------------------------------------------- /src/Statements/RestoreStatement.php: -------------------------------------------------------------------------------- 1 | > 18 | * @psalm-var array 1, 22 | 23 | 'FROM' => [ 24 | 2, 25 | 'var', 26 | ], 27 | ]; 28 | } 29 | -------------------------------------------------------------------------------- /src/Statements/TruncateStatement.php: -------------------------------------------------------------------------------- 1 | > 19 | * @psalm-var array 1]; 22 | 23 | /** 24 | * The name of the truncated table. 25 | */ 26 | public Expression|null $table = null; 27 | 28 | /** 29 | * Special build method for truncate statement as Statement::build would return empty string. 30 | */ 31 | public function build(): string 32 | { 33 | return 'TRUNCATE TABLE ' . $this->table . ';'; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/Tools/CustomJsonSerializer.php: -------------------------------------------------------------------------------- 1 | 32 | */ 33 | // phpcs:ignore SlevomatCodingStandard.TypeHints 34 | protected function extractObjectData($value, $ref, $properties): array 35 | { 36 | $data = []; 37 | foreach ($properties as $property) { 38 | if (in_array($property, self::SKIP_PROPERTIES, true)) { 39 | continue; 40 | } 41 | 42 | try { 43 | $propRef = $ref->getProperty($property); 44 | $propRef->setAccessible(true); 45 | $data[$property] = $propRef->getValue($value); 46 | } catch (ReflectionException) { 47 | $data[$property] = $value->$property; 48 | } 49 | } 50 | 51 | return $data; 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/Utils/ForeignKey.php: -------------------------------------------------------------------------------- 1 | $selectTables 18 | * @psalm-param list $selectExpressions 19 | */ 20 | public function __construct( 21 | public readonly Parser $parser, 22 | public readonly Statement|null $statement, 23 | public readonly StatementFlags $flags, 24 | public readonly array $selectTables, 25 | public readonly array $selectExpressions, 26 | ) { 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/Utils/StatementType.php: -------------------------------------------------------------------------------- 1 | statements[0]; 17 | $this->assertEquals($query, $stmt->build()); 18 | 19 | $query = 'PURGE BINARY LOGS BEFORE \'2008-04-02 22:46:26\''; 20 | $parser = new Parser($query); 21 | $stmt = $parser->statements[0]; 22 | $this->assertEquals($query, $stmt->build()); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /tests/Builder/RenameStatementTest.php: -------------------------------------------------------------------------------- 1 | statements[0]; 17 | $this->assertEquals( 18 | $query, 19 | $stmt->build(), 20 | ); 21 | 22 | $query = 'RENAME TABLE current_db.tbl_name TO other_db.tbl_name'; 23 | $parser = new Parser($query); 24 | $stmt = $parser->statements[0]; 25 | $this->assertEquals( 26 | $query, 27 | $stmt->build(), 28 | ); 29 | 30 | $query = 'RENAME TABLE old_table1 TO new_table1, old_table2 TO new_table2, old_table3 TO new_table3'; 31 | $parser = new Parser($query); 32 | $stmt = $parser->statements[0]; 33 | $this->assertEquals( 34 | $query, 35 | $stmt->build(), 36 | ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /tests/Builder/TransactionStatementTest.php: -------------------------------------------------------------------------------- 1 | statements[0]; 21 | 22 | $this->assertEquals( 23 | 'START TRANSACTION;' . 24 | 'SELECT @A:=SUM(salary) FROM table1 WHERE type=1;' . 25 | 'UPDATE table2 SET summary = @A WHERE type=1;' . 26 | 'COMMIT', 27 | $stmt->build(), 28 | ); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /tests/Builder/TruncateStatementTest.php: -------------------------------------------------------------------------------- 1 | statements[0]; 18 | 19 | $this->assertEquals($query, $stmt->build()); 20 | } 21 | 22 | public function testBuilderDbtable(): void 23 | { 24 | $query = 'TRUNCATE TABLE mydb.mytable;'; 25 | 26 | $parser = new Parser($query); 27 | $stmt = $parser->statements[0]; 28 | 29 | $this->assertEquals($query, $stmt->build()); 30 | } 31 | 32 | public function testBuilderDbtableBackQuotes(): void 33 | { 34 | $query = 'TRUNCATE TABLE `mydb`.`mytable`;'; 35 | 36 | $parser = new Parser($query); 37 | $stmt = $parser->statements[0]; 38 | 39 | $this->assertEquals($query, $stmt->build()); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /tests/Components/ConditionTest.php: -------------------------------------------------------------------------------- 1 | getTokensList('/* id = */ id = 10')); 16 | $this->assertEquals('id = 10', $component[0]->expr); 17 | } 18 | 19 | public function testParseBetween(): void 20 | { 21 | $component = Conditions::parse( 22 | new Parser(), 23 | $this->getTokensList('(id BETWEEN 10 AND 20) OR (id BETWEEN 30 AND 40)'), 24 | ); 25 | $this->assertEquals('(id BETWEEN 10 AND 20)', $component[0]->expr); 26 | $this->assertEquals('OR', $component[1]->expr); 27 | $this->assertEquals('(id BETWEEN 30 AND 40)', $component[2]->expr); 28 | } 29 | 30 | public function testParseAnd(): void 31 | { 32 | $component = Conditions::parse(new Parser(), $this->getTokensList("`col` LIKE 'AND'")); 33 | $this->assertEquals("`col` LIKE 'AND'", Conditions::buildAll($component)); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /tests/Components/FunctionCallTest.php: -------------------------------------------------------------------------------- 1 | assertEquals('func(a, b)', $component->build()); 17 | } 18 | 19 | public function testBuildArrayObj(): void 20 | { 21 | $component = new FunctionCall('func', new ArrayObj(['a', 'b'])); 22 | $this->assertEquals('func(a, b)', $component->build()); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /tests/Components/LimitTest.php: -------------------------------------------------------------------------------- 1 | assertEquals('0, 1', $component->build()); 17 | } 18 | 19 | public function testBuildWithOffset(): void 20 | { 21 | $component = new Limit(1, 2); 22 | $this->assertEquals('2, 1', $component->build()); 23 | } 24 | 25 | #[DataProvider('parseProvider')] 26 | public function testParse(string $test): void 27 | { 28 | $this->runParserTest($test); 29 | } 30 | 31 | /** @return string[][] */ 32 | public static function parseProvider(): array 33 | { 34 | return [ 35 | ['parser/parseLimitErr1'], 36 | ['parser/parseLimitErr2'], 37 | ]; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /tests/Components/OrderKeywordTest.php: -------------------------------------------------------------------------------- 1 | assertEquals( 18 | 'a ASC, b DESC', 19 | OrderKeywords::buildAll( 20 | [ 21 | new OrderKeyword(new Expression('a'), OrderSortKeyword::Asc), 22 | new OrderKeyword(new Expression('b'), OrderSortKeyword::Desc), 23 | ], 24 | ), 25 | ); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /tests/Components/ParameterDefinitionTest.php: -------------------------------------------------------------------------------- 1 | getTokensList('(a INT, b INT'), 18 | ); 19 | $this->assertEquals('a', $component[0]->name); 20 | $this->assertEquals('b', $component[1]->name); 21 | } 22 | 23 | public function testParseComplex(): void 24 | { 25 | $parser = new Parser(); 26 | $component = ParameterDefinitions::parse( 27 | $parser, 28 | $this->getTokensList('CREATE DEFINER=`root`@`%` PROCEDURE `foo`( $bar int )'), 29 | ); 30 | $this->assertEquals('$bar', $component[0]->name); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /tests/Components/ReferenceTest.php: -------------------------------------------------------------------------------- 1 | getTokensList('tbl (id)')); 18 | $this->assertNotNull($component->table); 19 | $this->assertEquals('tbl', $component->table->table); 20 | $this->assertEquals(['id'], $component->columns); 21 | } 22 | 23 | public function testBuild(): void 24 | { 25 | $component = new Reference(new Expression('`tbl`'), ['id']); 26 | $this->assertEquals('`tbl` (`id`)', $component->build()); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /tests/Components/RenameOperationTest.php: -------------------------------------------------------------------------------- 1 | getTokensList('a TO b, c TO d')); 16 | $this->assertEquals('a TO b, c TO d', RenameOperations::buildAll($component)); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /tests/Misc/BugsTest.php: -------------------------------------------------------------------------------- 1 | runParserTest($test); 16 | } 17 | 18 | /** @return string[][] */ 19 | public static function bugProvider(): array 20 | { 21 | return [ 22 | ['bugs/fuzz1'], 23 | ['bugs/fuzz2'], 24 | ['bugs/fuzz3'], 25 | ['bugs/fuzz4'], 26 | ['bugs/gh9'], 27 | ['bugs/gh14'], 28 | ['bugs/gh16'], 29 | ['bugs/gh202'], 30 | ['bugs/gh234'], 31 | ['bugs/gh317'], 32 | ['bugs/gh412'], 33 | ['bugs/gh478'], 34 | ['bugs/gh492'], 35 | ['bugs/gh496'], 36 | ['bugs/gh498'], 37 | ['bugs/gh499'], 38 | ['bugs/gh508'], 39 | ['bugs/gh511'], 40 | ['bugs/pma11800'], 41 | ['bugs/pma11836'], 42 | ['bugs/pma11843'], 43 | ['bugs/pma11879'], 44 | ]; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /tests/Misc/ParameterTest.php: -------------------------------------------------------------------------------- 1 | runParserTest($test); 16 | } 17 | 18 | /** @return string[][] */ 19 | public static function parameterProvider(): array 20 | { 21 | return [ 22 | ['misc/parseParameter'], 23 | ['misc/parseParameter2'], 24 | ]; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /tests/Parser/AnalyzeStatementTest.php: -------------------------------------------------------------------------------- 1 | runParserTest($test); 16 | } 17 | 18 | /** @return string[][] */ 19 | public static function analyzeProvider(): array 20 | { 21 | return [ 22 | ['parser/parseAnalyzeTable'], 23 | ['parser/parseAnalyzeTable1'], 24 | ['parser/parseAnalyzeErr1'], 25 | ['parser/parseAnalyzeErr2'], 26 | ]; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /tests/Parser/CallStatementTest.php: -------------------------------------------------------------------------------- 1 | runParserTest($test); 16 | } 17 | 18 | /** @return string[][] */ 19 | public static function callProvider(): array 20 | { 21 | return [ 22 | ['parser/parseCall'], 23 | ['parser/parseCall2'], 24 | ['parser/parseCall3'], 25 | ['parser/parseCall4'], 26 | ['parser/parseCall5'], 27 | ]; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /tests/Parser/DropStatementTest.php: -------------------------------------------------------------------------------- 1 | runParserTest($test); 16 | } 17 | 18 | /** @return string[][] */ 19 | public static function dropProvider(): array 20 | { 21 | return [ 22 | ['parser/parseDrop'], 23 | ['parser/parseDrop2'], 24 | ]; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /tests/Parser/ExplainStatementTest.php: -------------------------------------------------------------------------------- 1 | runParserTest($test); 16 | } 17 | 18 | /** @return string[][] */ 19 | public static function explainProvider(): array 20 | { 21 | return [ 22 | ['parser/parseExplain'], 23 | ['parser/parseExplain1'], 24 | ['parser/parseExplain2'], 25 | ['parser/parseExplain3'], 26 | ['parser/parseExplain4'], 27 | ['parser/parseExplain5'], 28 | ['parser/parseExplain6'], 29 | ['parser/parseExplain7'], 30 | ['parser/parseExplain8'], 31 | ['parser/parseExplain9'], 32 | ['parser/parseExplain10'], 33 | ['parser/parseExplain11'], 34 | ['parser/parseExplain12'], 35 | ['parser/parseExplain13'], 36 | ['parser/parseExplain14'], 37 | ['parser/parseExplainErr'], 38 | ['parser/parseExplainErr1'], 39 | ['parser/parseExplainErr2'], 40 | ['parser/parseExplainErr3'], 41 | ]; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /tests/Parser/InsertStatementTest.php: -------------------------------------------------------------------------------- 1 | runParserTest($test); 16 | } 17 | 18 | /** @return string[][] */ 19 | public static function insertProvider(): array 20 | { 21 | return [ 22 | ['parser/parseInsert'], 23 | ['parser/parseInsertFunction'], 24 | ['parser/parseInsertSelect'], 25 | ['parser/parseInsertOnDuplicateKey'], 26 | ['parser/parseInsertSetOnDuplicateKey'], 27 | ['parser/parseInsertSelectOnDuplicateKey'], 28 | ['parser/parseInsertOnDuplicateKeyErr'], 29 | ['parser/parseInsertErr'], 30 | ['parser/parseInsertErr2'], 31 | ['parser/parseInsertIntoErr'], 32 | ]; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /tests/Parser/LoadStatementTest.php: -------------------------------------------------------------------------------- 1 | getData('parser/parseLoad1'); 16 | $parser = new Parser($data['query']); 17 | $stmt = $parser->statements[0]; 18 | $this->assertNotNull($stmt->options); 19 | $this->assertTrue($stmt->options->has('CONCURRENT')); 20 | } 21 | 22 | #[DataProvider('loadProvider')] 23 | public function testLoad(string $test): void 24 | { 25 | $this->runParserTest($test); 26 | } 27 | 28 | /** @return string[][] */ 29 | public static function loadProvider(): array 30 | { 31 | return [ 32 | ['parser/parseLoad1'], 33 | ['parser/parseLoad2'], 34 | ['parser/parseLoad3'], 35 | ['parser/parseLoad4'], 36 | ['parser/parseLoad5'], 37 | ['parser/parseLoad6'], 38 | ['parser/parseLoad7'], 39 | ['parser/parseLoad8'], 40 | ['parser/parseLoadErr1'], 41 | ['parser/parseLoadErr2'], 42 | ['parser/parseLoadErr3'], 43 | ['parser/parseLoadErr4'], 44 | ['parser/parseLoadErr5'], 45 | ['parser/parseLoadErr6'], 46 | ]; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /tests/Parser/LockStatementTest.php: -------------------------------------------------------------------------------- 1 | runParserTest($test); 16 | } 17 | 18 | /** @return string[][] */ 19 | public static function lockProvider(): array 20 | { 21 | return [ 22 | ['parser/parseLock1'], 23 | ['parser/parseLock2'], 24 | ['parser/parseLock3'], 25 | ['parser/parseLock4'], 26 | ['parser/parseLock5'], 27 | ['parser/parseLockErr1'], 28 | ['parser/parseLockErr2'], 29 | ['parser/parseLockErr3'], 30 | ['parser/parseLockErr4'], 31 | ['parser/parseLockErr5'], 32 | ['parser/parseLockErr6'], 33 | ['parser/parseLockErr7'], 34 | ['parser/parseLockErr8'], 35 | ['parser/parseLockErr9'], 36 | ['parser/parseLockErr10'], 37 | ['parser/parseUnlock1'], 38 | ['parser/parseUnlockErr1'], 39 | ]; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /tests/Parser/PurgeStatementTest.php: -------------------------------------------------------------------------------- 1 | runParserTest($test); 16 | } 17 | 18 | /** @return string[][] */ 19 | public static function purgeProvider(): array 20 | { 21 | return [ 22 | ['parser/parsePurge'], 23 | ['parser/parsePurge2'], 24 | ['parser/parsePurge3'], 25 | ['parser/parsePurge4'], 26 | ['parser/parsePurgeErr'], 27 | ['parser/parsePurgeErr2'], 28 | ['parser/parsePurgeErr3'], 29 | ]; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /tests/Parser/RenameStatementTest.php: -------------------------------------------------------------------------------- 1 | runParserTest($test); 16 | } 17 | 18 | /** @return string[][] */ 19 | public static function renameProvider(): array 20 | { 21 | return [ 22 | ['parser/parseRename'], 23 | ['parser/parseRename2'], 24 | ['parser/parseRenameErr1'], 25 | ['parser/parseRenameErr2'], 26 | ['parser/parseRenameErr3'], 27 | ['parser/parseRenameErr4'], 28 | ['parser/parseRenameErr5'], 29 | ]; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /tests/Parser/ReplaceStatementTest.php: -------------------------------------------------------------------------------- 1 | runParserTest($test); 16 | } 17 | 18 | /** @return string[][] */ 19 | public static function replaceProvider(): array 20 | { 21 | return [ 22 | ['parser/parseReplace'], 23 | ['parser/parseReplace2'], 24 | ['parser/parseReplaceValues'], 25 | ['parser/parseReplaceSet'], 26 | ['parser/parseReplaceSelect'], 27 | ['parser/parseReplaceErr'], 28 | ['parser/parseReplaceErr2'], 29 | ['parser/parseReplaceErr3'], 30 | ['parser/parseReplaceIntoErr'], 31 | ]; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /tests/Parser/RestoreStatementTest.php: -------------------------------------------------------------------------------- 1 | runParserTest($test); 16 | } 17 | 18 | /** @return string[][] */ 19 | public static function restoreProvider(): array 20 | { 21 | return [ 22 | ['parser/parseRestore'], 23 | ]; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /tests/Parser/SetStatementTest.php: -------------------------------------------------------------------------------- 1 | runParserTest($test); 16 | } 17 | 18 | /** @return string[][] */ 19 | public static function setProvider(): array 20 | { 21 | return [ 22 | ['parser/parseSetCharset'], 23 | ['parser/parseSetCharsetError'], 24 | ['parser/parseSetCharacterSet'], 25 | ['parser/parseSetCharacterSetError'], 26 | ['parser/parseAlterTableSetAutoIncrementError'], 27 | ['parser/parseSetNames'], 28 | ['parser/parseSetNamesError'], 29 | ['parser/parseSetError1'], 30 | ['parser/parseInsertIntoSet'], 31 | ['parser/parseSetVariable'], 32 | ['parser/parseSetVariable2'], 33 | ['parser/parseSetGlobalVariable'], 34 | ]; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /tests/Parser/TransactionStatementTest.php: -------------------------------------------------------------------------------- 1 | getData('parser/parseTransaction4'); 16 | $parser = new Parser($data['query']); 17 | $stmt = $parser->statements[0]; 18 | $this->assertEquals( 19 | 'START TRANSACTION;SET time_zone = "+00:00";', 20 | $stmt->build(), 21 | ); 22 | } 23 | 24 | #[DataProvider('transactionProvider')] 25 | public function testTransaction(string $test): void 26 | { 27 | $this->runParserTest($test); 28 | } 29 | 30 | /** @return string[][] */ 31 | public static function transactionProvider(): array 32 | { 33 | return [ 34 | ['parser/parseTransaction'], 35 | ['parser/parseTransaction2'], 36 | ['parser/parseTransaction3'], 37 | ['parser/parseTransaction4'], 38 | ['parser/parseTransaction5'], 39 | ['parser/parseTransaction6'], 40 | ['parser/parseTransaction7'], 41 | ['parser/parseTransactionErr1'], 42 | ]; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /tests/Parser/UpdateStatementTest.php: -------------------------------------------------------------------------------- 1 | runParserTest($test); 16 | } 17 | 18 | /** @return string[][] */ 19 | public static function updateProvider(): array 20 | { 21 | return [ 22 | ['parser/parseUpdate1'], 23 | ['parser/parseUpdate2'], 24 | ['parser/parseUpdate3'], 25 | ['parser/parseUpdate4'], 26 | ['parser/parseUpdate5'], 27 | ['parser/parseUpdate6'], 28 | ['parser/parseUpdate7'], 29 | ['parser/parseUpdateErr'], 30 | ['parser/parseUpdateEmptySet'], 31 | ]; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /tests/Tools/contexts/testContext.txt: -------------------------------------------------------------------------------- 1 | RESERVED (R) 2 | RESERVED2 (R) 3 | RESERVED3 (R) 4 | RESERVED4 (R) 5 | reserved5 (R) 6 | 7 | FUNCTION (F) 8 | DATATYPE (D) 9 | KEYWORD (K) 10 | 11 | 12 | 13 | NO_FLAG 14 | COMPOSED KEYWORD 15 | 16 | FUNCTION 17 | -------------------------------------------------------------------------------- /tests/UtfStringSerializer.php: -------------------------------------------------------------------------------- 1 | 13 | * @psalm-return array{str: string} 14 | */ 15 | public function serialize(UtfString $str): array 16 | { 17 | return ['str' => (string) $str]; 18 | } 19 | 20 | /** 21 | * @param array $data 22 | * @psalm-param array{str: string} $data 23 | */ 24 | public function unserialize(array $data): UtfString 25 | { 26 | return new UtfString($data['str']); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /tests/data/bugs/fuzz1.in: -------------------------------------------------------------------------------- 1 | ALTER..2 -------------------------------------------------------------------------------- /tests/data/bugs/fuzz2.in: -------------------------------------------------------------------------------- 1 | WITH]( -------------------------------------------------------------------------------- /tests/data/bugs/fuzz3.in: -------------------------------------------------------------------------------- 1 | WITH*/A( -------------------------------------------------------------------------------- /tests/data/bugs/fuzz4.in: -------------------------------------------------------------------------------- 1 | ALTeR=SET -------------------------------------------------------------------------------- /tests/data/bugs/fuzz5.in: -------------------------------------------------------------------------------- 1 | +0xO -------------------------------------------------------------------------------- /tests/data/bugs/fuzz6.in: -------------------------------------------------------------------------------- 1 | -+0x! -------------------------------------------------------------------------------- /tests/data/bugs/gh14.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE 2 | `actor` MODIFY `actor_id` SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT, 3 | AUTO_INCREMENT = 201; -------------------------------------------------------------------------------- /tests/data/bugs/gh16.in: -------------------------------------------------------------------------------- 1 | CREATE TABLE `jos_core_acl_aro` ( 2 | `id` int(11) NOT NULL, 3 | `section_value` varchar(240) NOT NULL DEFAULT '0', 4 | `value` varchar(240) NOT NULL DEFAULT '', 5 | `order_value` int(11) NOT NULL DEFAULT '0', 6 | `name` varchar(255) NOT NULL DEFAULT '', 7 | `hidden` int(11) NOT NULL DEFAULT '0', 8 | PRIMARY KEY (`id`), 9 | UNIQUE KEY `jos_section_value_value_aro` (`section_value`(100),`value`(15)) USING BTREE, 10 | KEY `jos_gacl_hidden_aro` (`hidden`) 11 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1 -------------------------------------------------------------------------------- /tests/data/bugs/gh202.in: -------------------------------------------------------------------------------- 1 | update tbl_customer t set t.`description`=:yp where t.id=1; -------------------------------------------------------------------------------- /tests/data/bugs/gh234.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE `mail_template` CHANGE COLUMN `mtpl_group` `mtpl_group` ENUM('ORDER') NULL DEFAULT NULL ; -------------------------------------------------------------------------------- /tests/data/bugs/gh317.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE `demo` ADD KEY `IDX_REPAIR` (`REPAIR`); -------------------------------------------------------------------------------- /tests/data/bugs/gh412.in: -------------------------------------------------------------------------------- 1 | SELECT 1, 2, ?, 3 -------------------------------------------------------------------------------- /tests/data/bugs/gh478.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE `MY_TABLE` 2 | MODIFY `FOO` INT(11) NULL, 3 | MODIFY `MY_COLUMN` ENUM('INSERT','UPDATE','DELETE','REPLACE') NULL, 4 | MODIFY `BAR` VARCHAR(255) NULL; 5 | -------------------------------------------------------------------------------- /tests/data/bugs/gh492.in: -------------------------------------------------------------------------------- 1 | UPDATE order 2 | SET price = ? 3 | WHERE orderid = ? -------------------------------------------------------------------------------- /tests/data/bugs/gh496.in: -------------------------------------------------------------------------------- 1 | SELECT COUNT(*) AS amount 2 | FROM one i 3 | JOIN two io ON io.id = i.id -------------------------------------------------------------------------------- /tests/data/bugs/gh498.in: -------------------------------------------------------------------------------- 1 | SELECT ? 2 | FROM uno 3 | JOIN dos ON dos.id = uno.id 4 | LIMIT ? OFFSET ? -------------------------------------------------------------------------------- /tests/data/bugs/gh499.in: -------------------------------------------------------------------------------- 1 | UPDATE 2 | users 3 | SET 4 | username = ?, 5 | id=155; 6 | 7 | UPDATE 8 | users 9 | SET 10 | username = :user_name, 11 | id=155; -------------------------------------------------------------------------------- /tests/data/bugs/gh508.in: -------------------------------------------------------------------------------- 1 | 0X0F -------------------------------------------------------------------------------- /tests/data/bugs/gh511.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE users_type MODIFY limitations ENUM('tout', 'rien', 'bu', 'agence', 'agence_limite', 'n-1', 'agence_inactif'); 2 | UPDATE users_type SET limitations = 'agence_inactif' WHERE id_users_type = 19; 3 | -------------------------------------------------------------------------------- /tests/data/bugs/gh9.in: -------------------------------------------------------------------------------- 1 | SELECT * FROM foo WHERE 2 | SELECT * FROM foo WHERE 3 | 4 | START TRANSACTION; 5 | 6 | CREATE TABLE `tb` (`uid` INT UNSIGNED NOT NULL 7 | `position` INT NOT NULL, 8 | PRIMARY KEY ( `uid` ) , 9 | INDEX ( `position` ) 10 | ) ENGINE = InnoDB; 11 | 12 | COMMIT; -------------------------------------------------------------------------------- /tests/data/bugs/pma11800.in: -------------------------------------------------------------------------------- 1 | SELECT 'a' REGEXP '^[a-d]'; -------------------------------------------------------------------------------- /tests/data/bugs/pma11836.in: -------------------------------------------------------------------------------- 1 | SELECT * FROM alumnos WHERE id = IF(id = 1, id, nombre) AND id not in (SELECT id FROM alumnos) -------------------------------------------------------------------------------- /tests/data/bugs/pma11843.in: -------------------------------------------------------------------------------- 1 | CREATE TABLE `mytable` ( 2 | `id` int(11) NOT NULL, 3 | `created_at` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP 4 | ); -------------------------------------------------------------------------------- /tests/data/bugs/pma11879.in: -------------------------------------------------------------------------------- 1 | INSERT INTO 2 | tbproject(`id`, `name`, `description`, `create_dt`, `dbtype`, `useclause`, `sync_comments`) 3 | VALUES 4 | (NULL, 'testdb', 'Descrizione test', NOW(), 'mySQL', '', 1); -------------------------------------------------------------------------------- /tests/data/lexer/lex.in: -------------------------------------------------------------------------------- 1 | SELECT \\ -------------------------------------------------------------------------------- /tests/data/lexer/lexBool.in: -------------------------------------------------------------------------------- 1 | SELECT true, FalSe -------------------------------------------------------------------------------- /tests/data/lexer/lexComment.in: -------------------------------------------------------------------------------- 1 | # comment 2 | SELECT /*!50000 STRAIGHT_JOIN */ col1 FROM table1, table2 /* select query */ 3 | -- comment 4 | -- comment 2 -------------------------------------------------------------------------------- /tests/data/lexer/lexCommentEnd.in: -------------------------------------------------------------------------------- 1 | SELECT 1 2 | -- comment 3 | -- -------------------------------------------------------------------------------- /tests/data/lexer/lexDelimiter.in: -------------------------------------------------------------------------------- 1 | DELIMITER GO 2 | SELECT a,b FROM foo GO 3 | SELECT * FROM bar -------------------------------------------------------------------------------- /tests/data/lexer/lexDelimiter2.in: -------------------------------------------------------------------------------- 1 | DELIMTER // 2 | SELECT a,b FROM test // 3 | SELECT * FROM bar // -------------------------------------------------------------------------------- /tests/data/lexer/lexDelimiterErr1.in: -------------------------------------------------------------------------------- 1 | DELIMITER -------------------------------------------------------------------------------- /tests/data/lexer/lexDelimiterErr2.in: -------------------------------------------------------------------------------- 1 | DELIMITER -------------------------------------------------------------------------------- /tests/data/lexer/lexDelimiterErr3.in: -------------------------------------------------------------------------------- 1 | DELIMITER; 2 | -------------------------------------------------------------------------------- /tests/data/lexer/lexDelimiterLen.in: -------------------------------------------------------------------------------- 1 | DELIMITER abcdefghijklmnopqrstuvwxyz 2 | SELECT 1 abcdefghijklmnopqrstuvwxyz 3 | -------------------------------------------------------------------------------- /tests/data/lexer/lexEmptyCStyleComment.in: -------------------------------------------------------------------------------- 1 | SELECT /**/ 1 2 | SELECT /*+*/ 1 3 | SELECT /***/ 1 4 | SELECT /** */ 1 5 | SELECT /* **/ 1 6 | -------------------------------------------------------------------------------- /tests/data/lexer/lexKeyword.in: -------------------------------------------------------------------------------- 1 | SELECT 1 -------------------------------------------------------------------------------- /tests/data/lexer/lexKeyword2.in: -------------------------------------------------------------------------------- 1 | SELECT tbl.TABLE FROM tbl -------------------------------------------------------------------------------- /tests/data/lexer/lexLabel1.in: -------------------------------------------------------------------------------- 1 | CREATE PROCEDURE doiterate(p1 INT) 2 | BEGIN 3 | label1 : LOOP 4 | SET p1 = p1 + 1; 5 | IF p1 < 10 THEN 6 | ITERATE label1; 7 | END IF; 8 | LEAVE label1; 9 | END LOOP label1; 10 | SET @x = p1; 11 | END -------------------------------------------------------------------------------- /tests/data/lexer/lexLabel2.in: -------------------------------------------------------------------------------- 1 | CREATE PROCEDURE doiterate(p1 INT) 2 | BEGIN 3 | label1: LOOP 4 | SET p1 = p1 + 1; 5 | IF p1 < 10 THEN 6 | ITERATE label1; 7 | END IF; 8 | LEAVE label1; 9 | END LOOP label1; 10 | SET @x = p1; 11 | END -------------------------------------------------------------------------------- /tests/data/lexer/lexNoLabel.in: -------------------------------------------------------------------------------- 1 | SELECT wins FROM players WHERE auth = '[U1:123456789]' LIMIT 1 2 | -------------------------------------------------------------------------------- /tests/data/lexer/lexNumber.in: -------------------------------------------------------------------------------- 1 | SELECT 12, 34, 5.67, 0x89, -10, --11, +12, .15, 0xFFa, 0xfFA, +0xfFA, -0xFFa, -0xfFA, 1e-10, 1e10, .5e10, b'10'; 2 | -- invalid numbers 3 | SELECT 12ex10, b'15', 0XFfA, -0XFfA, +0XFfA, .e4; 4 | -------------------------------------------------------------------------------- /tests/data/lexer/lexOperator.in: -------------------------------------------------------------------------------- 1 | SELECT 1 + 2 -------------------------------------------------------------------------------- /tests/data/lexer/lexOperatorStarIsWildcard.in: -------------------------------------------------------------------------------- 1 | SELECT * FROM 2 | SELECT *FROM 3 | SELECT a.* FROM 4 | SELECT a.*,b.* FROM 5 | SELECT a.*, b.* FROM 6 | SELECT a.*, /* with a comment */ b.* FROM 7 | SELECT a.*,/* with a comment */b.* FROM 8 | SELECT a.* /* comment */ FROM 9 | SELECT a.*/* comment */ FROM 10 | SELECT DISTINCT * FROM 11 | SELECT DISTINCT *FROM 12 | SELECT DISTINCT a.* FROM 13 | SELECT DISTINCT a.*,b.* FROM 14 | SELECT DISTINCT a.*, b.* FROM 15 | SELECT DISTINCT a.*, /* with a comment */ b.* FROM 16 | SELECT DISTINCT a.*,/* with a comment */b.* FROM 17 | SELECT DISTINCT a.* /* comment */ FROM 18 | SELECT DISTINCT a.*/* comment */ FROM 19 | SELECT `*` FROM table_name 20 | SELECT `*`.* FROM table_name AS `*` 21 | SELECT COUNT(*) FROM table_name 22 | SELECT COUNT( * ) FROM table_name 23 | SELECT COUNT( * /* comment with *,USING,FROM */) FROM table_name 24 | SELECT COUNT(`*`) FROM table_name 25 | SELECT 1 FROM table_name WHERE LABEL LIKE '%*%' 26 | DELETE a.* USING 27 | DELETE a.*, b.* USING 28 | DELETE a.* ,b.* USING 29 | DELETE a.* , b.* USING 30 | DELETE a.* /* comment */ USING 31 | DELETE a.* /* comment */, b.* /*comment*/ USING 32 | DELETE a.* /* comment */ ,b.* /*comment*/ USING 33 | DELETE a.* /* comment */ , b.* /*comment*/ USING 34 | 35 | -------------------------------------------------------------------------------- /tests/data/lexer/lexString.in: -------------------------------------------------------------------------------- 1 | SELECT 'foo', "bar", "foo\\ bar" -------------------------------------------------------------------------------- /tests/data/lexer/lexStringErr1.in: -------------------------------------------------------------------------------- 1 | SELECT 'foo', "bar", "foo\\ bar -------------------------------------------------------------------------------- /tests/data/lexer/lexSymbol.in: -------------------------------------------------------------------------------- 1 | SET @idx := 1; 2 | SELECT @idx, @`idx`, @'idx', @@hostname -------------------------------------------------------------------------------- /tests/data/lexer/lexSymbolErr1.in: -------------------------------------------------------------------------------- 1 | SET @idx := 1; 2 | SELECT @idx, @`idx`, @'idx -------------------------------------------------------------------------------- /tests/data/lexer/lexSymbolErr2.in: -------------------------------------------------------------------------------- 1 | SET @idx := 1; 2 | SELECT @idx, @`idx`, @ -------------------------------------------------------------------------------- /tests/data/lexer/lexSymbolErr3.in: -------------------------------------------------------------------------------- 1 | SELECT `idx -------------------------------------------------------------------------------- /tests/data/lexer/lexSymbolUser1.in: -------------------------------------------------------------------------------- 1 | CREATE USER 'user'@'hostname' IDENTIFIED BY 'password'; -------------------------------------------------------------------------------- /tests/data/lexer/lexSymbolUser2.in: -------------------------------------------------------------------------------- 1 | ALTER USER 'user'@'hostname' IDENTIFIED WITH mysql_native_password BY 'password'; -------------------------------------------------------------------------------- /tests/data/lexer/lexSymbolUser3.in: -------------------------------------------------------------------------------- 1 | ALTER USER 'user'@'hostname' WITH MAX_QUERIES_PER_HOUR 500 MAX_UPDATES_PER_HOUR 100; -------------------------------------------------------------------------------- /tests/data/lexer/lexSymbolUser4_mariadb_100400.in: -------------------------------------------------------------------------------- 1 | ALTER USER 'user'@'hostname' IDENTIFIED VIA mysql_native_password BY 'password'; -------------------------------------------------------------------------------- /tests/data/lexer/lexSymbolUser5_mariadb_100400.in: -------------------------------------------------------------------------------- 1 | CREATE USER 'user'@'hostname' IDENTIFIED VIA mysql_native_password BY 'password'; -------------------------------------------------------------------------------- /tests/data/lexer/lexUtf8.in: -------------------------------------------------------------------------------- 1 | select * from école -------------------------------------------------------------------------------- /tests/data/lexer/lexWhitespace.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SELECT 5 | 'w h i t e s p a c e' 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /tests/data/lexer/lexWildcardThenComment.in: -------------------------------------------------------------------------------- 1 | SELECT */* comment */ 2 | 3 | SELECT /* comment */* 4 | 5 | SELECT 2*/* comment */3 6 | 7 | SELECT 2/* comment */*3 8 | 9 | SELECT */* 10 | comment 11 | on 12 | multiple 13 | lines 14 | */FROM 15 | 16 | DELETE foo.*/* foo */ USING 17 | 18 | DELETE foo.*/* foo */,bar.*/*bar*/ USING 19 | 20 | SELECT `*`/*with comment*/ AS star_field 21 | 22 | SELECT `*`,*/*with comment*/ 23 | 24 | DELETE a.*/*multi 25 | line /* with C open tag 26 | comment inside */ USING 27 | 28 | SELECT 2*/* operator */3 + 3/* operator */*2,/* start wildcard */*/* end wildcard */ 29 | 30 | SELECT `*`/*a*/*/*b*/`*` 31 | 32 | -- invalid queries 33 | /* SELECT */* -------------------------------------------------------------------------------- /tests/data/misc/parseParameter.in: -------------------------------------------------------------------------------- 1 | INSERT INTO `person` (`firstname`, `lastname`, `email`) VALUES (:firstname, :lastname, :email); -------------------------------------------------------------------------------- /tests/data/misc/parseParameter2.in: -------------------------------------------------------------------------------- 1 | INSERT INTO `person` (`firstname`, `lastname`, `email`) VALUES (?, ?, ?); -------------------------------------------------------------------------------- /tests/data/parser/parse.in: -------------------------------------------------------------------------------- 1 | SELECT 1; -------------------------------------------------------------------------------- /tests/data/parser/parse2.in: -------------------------------------------------------------------------------- 1 | (SELECT 1);((SELECT 2)); -------------------------------------------------------------------------------- /tests/data/parser/parseAlter.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE `actor` 2 | ADD PRIMARY KEY (`actor_id`), 3 | ADD KEY `idx_actor_last_name` (`last_name`); -------------------------------------------------------------------------------- /tests/data/parser/parseAlter10.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE `database`.`table` MODIFY `field` INT(11) AUTO_INCREMENT PRIMARY KEY; -------------------------------------------------------------------------------- /tests/data/parser/parseAlter11.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE `actor` ADD `last_update2` SET ('value1','value2','value3') NOT NULL AFTER last_update -------------------------------------------------------------------------------- /tests/data/parser/parseAlter12.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE actor ALTER last_update2 SET DEFAULT 'value1'; -------------------------------------------------------------------------------- /tests/data/parser/parseAlter13.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE `actor` ADD `last_update2` SET ('value1','value2','value3') -------------------------------------------------------------------------------- /tests/data/parser/parseAlter14.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE `table` ADD UNIQUE KEY `functional_index` (`field1`,`field2`, (IFNULL(`field3`,0))); 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlter2.in: -------------------------------------------------------------------------------- 1 | ALTER /* */ TABLE /* */ table 2 | CONVERT /* */ TO /* */ CHARACTER /* */ SET /* */ utf8; -------------------------------------------------------------------------------- /tests/data/parser/parseAlter3.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE `tbl` CHANGE `uid` `uid` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT 2 | 3 | ALTER TABLE `tbl` CHANGE `field_1` `field_2` INT( 10 ) UNSIGNED NOT NULL -------------------------------------------------------------------------------- /tests/data/parser/parseAlter4.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE my_table COMMENT='Comment of table'; -------------------------------------------------------------------------------- /tests/data/parser/parseAlter5.in: -------------------------------------------------------------------------------- 1 | ALTER DATABASE `abc` CHARACTER SET = 'utf8' -------------------------------------------------------------------------------- /tests/data/parser/parseAlter6.in: -------------------------------------------------------------------------------- 1 | ALTER VIEW `abc` AS SELECT `a` FROM `b` -------------------------------------------------------------------------------- /tests/data/parser/parseAlter7.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE `tbl` CHANGE `uid` `uid` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT, CHANGE `field_1` `field_2` INT( 10 ) UNSIGNED NOT NULL -------------------------------------------------------------------------------- /tests/data/parser/parseAlter8.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE `api_tab_user` CHANGE `rank_id` `rank_id` INT(4) NOT NULL DEFAULT '4'; -------------------------------------------------------------------------------- /tests/data/parser/parseAlter9.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE place CHANGE COLUMN plc_location_type gplc_location_type ENUM('LOCATION') CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci' NOT NULL; -------------------------------------------------------------------------------- /tests/data/parser/parseAlterErr.in: -------------------------------------------------------------------------------- 1 | -- missing comma between alter operations 2 | ALTER TABLE `tbl` CHANGE `uid` `uid` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT CHANGE `field_1` `field_2` INT( 10 ) UNSIGNED NOT NULL -------------------------------------------------------------------------------- /tests/data/parser/parseAlterErr2.in: -------------------------------------------------------------------------------- 1 | -- missing comma between alter operations 2 | ALTER TABLE tb_foo CHANGE inmsg inmsg date NULL AFTER outmsg2 CHANGE inmsg2 inmsg2 time NULL AFTER inmsg; 3 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterErr3.in: -------------------------------------------------------------------------------- 1 | -- missing comma between alter operations 2 | ALTER TABLE `database`.`table` MODIFY `field` INT(11) AUTO_INCREMENT PRIMARY KEY; 3 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterErr4.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE actor ALTER last_update2 SET DEFAULT value1'; -------------------------------------------------------------------------------- /tests/data/parser/parseAlterEvent.in: -------------------------------------------------------------------------------- 1 | ALTER EVENT my_event ENABLE; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterEvent2.in: -------------------------------------------------------------------------------- 1 | ALTER EVENT my_event DISABLE; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterEvent3.in: -------------------------------------------------------------------------------- 1 | ALTER EVENT my_event DISABLE ON SLAVE; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterEvent4.in: -------------------------------------------------------------------------------- 1 | ALTER EVENT my_event ON COMPLETION PRESERVE; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterEvent5.in: -------------------------------------------------------------------------------- 1 | ALTER EVENT my_event ON COMPLETION NOT PRESERVE; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterEvent6.in: -------------------------------------------------------------------------------- 1 | ALTER EVENT my_event RENAME TO my_new_event; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterEvent7.in: -------------------------------------------------------------------------------- 1 | ALTER EVENT my_event COMMENT 'This is an event'; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterEvent8.in: -------------------------------------------------------------------------------- 1 | ALTER EVENT my_event DO 2 | SELECT * FROM my_table; 3 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterEvent9.in: -------------------------------------------------------------------------------- 1 | ALTER EVENT old_db.old_event RENAME TO new_db.new_event; 2 | ALTER EVENT `old_db`.`old_event` RENAME TO `new_db`.`new_event`; 3 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterEventComplete.in: -------------------------------------------------------------------------------- 1 | ALTER EVENT my_event 2 | ON SCHEDULE 3 | EVERY 2 WEEK 4 | STARTS CURRENT_TIMESTAMP + INTERVAL 4 WEEK 5 | ENDS '2099-12-30 23:12:01' + INTERVAL 1 DAY 6 | ON COMPLETION NOT PRESERVE 7 | RENAME TO my_complete_event 8 | DISABLE 9 | COMMENT 'String as a comment' 10 | DO 11 | SELECT * FROM my_table; 12 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterEventErr.in: -------------------------------------------------------------------------------- 1 | -- No option in ALTER EVENT. 2 | ALTER EVENT my_event; 3 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterEventOnScheduleAt.in: -------------------------------------------------------------------------------- 1 | ALTER EVENT my_event ON SCHEDULE 2 | AT '2023-01-01 01:23:45'; 3 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterEventOnScheduleAt2.in: -------------------------------------------------------------------------------- 1 | ALTER EVENT my_event ON SCHEDULE 2 | AT '2023-01-01 01:23:45' + INTERVAL 1 DAY; 3 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterEventOnScheduleEvery.in: -------------------------------------------------------------------------------- 1 | ALTER EVENT my_event ON SCHEDULE 2 | EVERY 2 WEEK; 3 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterEventOnScheduleEvery2.in: -------------------------------------------------------------------------------- 1 | ALTER EVENT my_event ON SCHEDULE 2 | EVERY 2 WEEK + INTERVAL 4 HOUR; 3 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterEventOnScheduleEvery3.in: -------------------------------------------------------------------------------- 1 | ALTER EVENT my_event ON SCHEDULE 2 | EVERY 2 WEEK 3 | STARTS CURRENT_TIMESTAMP; 4 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterEventOnScheduleEvery4.in: -------------------------------------------------------------------------------- 1 | ALTER EVENT my_event ON SCHEDULE 2 | EVERY 2 WEEK 3 | STARTS CURRENT_TIMESTAMP + INTERVAL 4 HOUR; 4 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterEventOnScheduleEvery5.in: -------------------------------------------------------------------------------- 1 | ALTER EVENT my_event ON SCHEDULE 2 | EVERY 2 WEEK 3 | STARTS CURRENT_TIMESTAMP 4 | ENDS '2099-12-30 23:12:01'; 5 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterEventOnScheduleEvery6.in: -------------------------------------------------------------------------------- 1 | ALTER EVENT my_event ON SCHEDULE 2 | EVERY 2 WEEK 3 | STARTS CURRENT_TIMESTAMP 4 | ENDS '2099-12-30 23:12:01' + INTERVAL 1 DAY; 5 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterEventWithDefiner.in: -------------------------------------------------------------------------------- 1 | ALTER DEFINER = user EVENT my_event ENABLE; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterEventWithOtherDefiners.in: -------------------------------------------------------------------------------- 1 | ALTER DEFINER = 'user' EVENT my_event ENABLE; 2 | ALTER DEFINER = `user` EVENT my_event ENABLE; 3 | ALTER DEFINER = user@host EVENT my_event ENABLE; 4 | ALTER DEFINER = 'user'@'host' EVENT my_event ENABLE; 5 | ALTER DEFINER = `user`@`host` EVENT my_event ENABLE; 6 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterFunction1.in: -------------------------------------------------------------------------------- 1 | ALTER FUNCTION func_name COMMENT "test"; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterFunction2.in: -------------------------------------------------------------------------------- 1 | ALTER FUNCTION func_name LANGUAGE SQL; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterFunction3.in: -------------------------------------------------------------------------------- 1 | ALTER FUNCTION func_name COMMENT "test" LANGUAGE SQL CONTAINS SQL SQL SECURITY DEFINER; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterFunction4.in: -------------------------------------------------------------------------------- 1 | ALTER FUNCTION func_name COMMENT "test" LANGUAGE SQL NO SQL SQL SECURITY INVOKER; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterFunction5.in: -------------------------------------------------------------------------------- 1 | ALTER FUNCTION func_name COMMENT "test" LANGUAGE SQL READS SQL DATA; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterFunction6.in: -------------------------------------------------------------------------------- 1 | ALTER FUNCTION func_name COMMENT "test" LANGUAGE SQL MODIFIES SQL DATA; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterProcedure1.in: -------------------------------------------------------------------------------- 1 | ALTER PROCEDURE proc_name COMMENT "test"; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterProcedure2.in: -------------------------------------------------------------------------------- 1 | ALTER PROCEDURE proc_name LANGUAGE SQL; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterProcedure3.in: -------------------------------------------------------------------------------- 1 | ALTER PROCEDURE proc_name COMMENT "test" LANGUAGE SQL CONTAINS SQL SQL SECURITY DEFINER; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterProcedure4.in: -------------------------------------------------------------------------------- 1 | ALTER PROCEDURE proc_name COMMENT "test" LANGUAGE SQL NO SQL SQL SECURITY INVOKER; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterProcedure5.in: -------------------------------------------------------------------------------- 1 | ALTER PROCEDURE proc_name COMMENT "test" LANGUAGE SQL READS SQL DATA; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterProcedure6.in: -------------------------------------------------------------------------------- 1 | ALTER PROCEDURE proc_name COMMENT "test" LANGUAGE SQL MODIFIES SQL DATA; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterRenameColumn.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE myTable RENAME COLUMN foo TO bar; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterRenameColumns.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE myTable RENAME COLUMN a TO b, 2 | RENAME COLUMN b TO c, 3 | RENAME COLUMN c TO d, 4 | RENAME COLUMN d TO a; 5 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterTableAddColumnWithCheck.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE `xx` ADD `json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL CHECK (json_valid(`json`)); -------------------------------------------------------------------------------- /tests/data/parser/parseAlterTableAddSpatialIndex1.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE testtable ADD SPATIAL INDEX(`mypoint`), ALGORITHM=INPLACE, LOCK=SHARED; -------------------------------------------------------------------------------- /tests/data/parser/parseAlterTableAddUniqueKey1.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE testtable ADD UNIQUE KEY name_of_the_unique_constraint (`UNIQUE_COLUMN`); 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterTableAddUniqueKey2.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE testtable ADD UNIQUE name_of_the_unique_constraint (`UNIQUE_COLUMN`); 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterTableCharacterSet1.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE `d` DEFAULT CHARSET=hp8 COLLATE hp8_english_ci; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterTableCharacterSet2.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE `d` CHARSET=hp8 2 | 3 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterTableCharacterSet3.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE `d` CHARSET=hp8; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterTableCharacterSet4.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name; 2 | 3 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterTableCharacterSet5.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE `d` CHARACTER SET utf8; 2 | 3 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterTableCharacterSet6.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE `d` CHARACTER SET utf8 COLLATE utf8_general_ci; 2 | 3 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterTableCharacterSet7.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE `d` CHARACTER SET utf8 COLLATE utf8_general_ci; 2 | 3 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterTableCoalescePartition.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE `MY_TABLE` COALESCE PARTITION 2; -------------------------------------------------------------------------------- /tests/data/parser/parseAlterTableDropAddIndex1.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE testtable DROP INDEX my_index2, ADD INDEX my_index3(id, id3) USING BTREE, ALGORITHM=COPY; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterTableDropColumn1.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE `testtable` DROP COLUMN `id2`, ALGORITHM=INPLACE, LOCK=NONE; -------------------------------------------------------------------------------- /tests/data/parser/parseAlterTableModifyColumn.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE testtable MODIFY COLUMN id INT(11) FIRST, ALGORITHM=INPLACE, LOCK=SHARED; -------------------------------------------------------------------------------- /tests/data/parser/parseAlterTableModifyColumnEnum1.in: -------------------------------------------------------------------------------- 1 | -- ENUM with a string that is a database option. 2 | ALTER TABLE `test_table` MODIFY `COL` ENUM("COLLATE") NULL; 3 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterTableModifyColumnEnum2.in: -------------------------------------------------------------------------------- 1 | -- ENUM with a string that is a table option. 2 | ALTER TABLE `test_table` MODIFY `COL` ENUM("LOCK") NULL; 3 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterTableModifyColumnEnum3.in: -------------------------------------------------------------------------------- 1 | -- ENUM with a string that is a statement. 2 | ALTER TABLE `test_table` MODIFY `COL` ENUM("INSERT") NULL; 3 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterTablePartitionByRange1.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE trips PARTITION BY RANGE (MONTH(trip_date)) 2 | ( 3 | PARTITION p01 VALUES LESS THAN (02), 4 | PARTITION p02 VALUES LESS THAN (03), 5 | PARTITION p03 VALUES LESS THAN (04), 6 | PARTITION p04 VALUES LESS THAN (05), 7 | PARTITION p05 VALUES LESS THAN (06), 8 | PARTITION p06 VALUES LESS THAN (07), 9 | PARTITION p07 VALUES LESS THAN (08), 10 | PARTITION p08 VALUES LESS THAN (09), 11 | PARTITION p09 VALUES LESS THAN (10), 12 | PARTITION p10 VALUES LESS THAN (11), 13 | PARTITION p11 VALUES LESS THAN (12), 14 | PARTITION p12 VALUES LESS THAN (13), 15 | PARTITION pmaxval VALUES LESS THAN MAXVALUE 16 | ); -------------------------------------------------------------------------------- /tests/data/parser/parseAlterTablePartitionByRange2.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE d PARTITION BY RANGE (MONTH(departure_date)) 2 | ( 3 | PARTITION p01 VALUES LESS THAN (02) , 4 | PARTITION pmaxval VALUES LESS THAN MAXVALUE 5 | ); 6 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterTableRenameIndex1.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE `transactions` RENAME INDEX `fk_transactions_catalog_entries1_idx` TO `fk_transactions_catalog_entries2_idx` -------------------------------------------------------------------------------- /tests/data/parser/parseAlterTableRenameIndex2.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE testtable RENAME INDEX my_index TO my_index2, ALGORITHM=INPLACE, LOCK=NONE; -------------------------------------------------------------------------------- /tests/data/parser/parseAlterTableRenameKey1.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE `transactions` RENAME KEY `fk_transactions_catalog_entries1_idx` TO `fk_transactions_catalog_entries2_idx` 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterTableRenameKey2.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE testtable RENAME KEY my_index TO my_index2, ALGORITHM=INPLACE, LOCK=NONE; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterTableSetAutoIncrementError.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE t1 AUTO_INCREMENT 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterUser.in: -------------------------------------------------------------------------------- 1 | ALTER USER 'jeffrey'@'localhost' 2 | IDENTIFIED BY 'new_password' PASSWORD EXPIRE; -------------------------------------------------------------------------------- /tests/data/parser/parseAlterUser1.in: -------------------------------------------------------------------------------- 1 | ALTER USER trevor REQUIRE NONE; -------------------------------------------------------------------------------- /tests/data/parser/parseAlterUser10.in: -------------------------------------------------------------------------------- 1 | ALTER USER 'bob'@'localhost' IDENTIFIED WITH mysql_native_password USING PASSWORD('vp8LAf4#wu2V&Wi*iJWC#3KPotsHzx3u'); 2 | 3 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterUser2.in: -------------------------------------------------------------------------------- 1 | ALTER USER 'user'@'localhost' ACCOUNT LOCK; -------------------------------------------------------------------------------- /tests/data/parser/parseAlterUser3.in: -------------------------------------------------------------------------------- 1 | ALTER USER 'testosama' REQUIRE SSL WITH MAX_CONNECTIONS_PER_HOUR 20; -------------------------------------------------------------------------------- /tests/data/parser/parseAlterUser4.in: -------------------------------------------------------------------------------- 1 | ALTER USER 'user' 2 | WITH MAX_QUERIES_PER_HOUR 500 MAX_UPDATES_PER_HOUR 100; -------------------------------------------------------------------------------- /tests/data/parser/parseAlterUser5.in: -------------------------------------------------------------------------------- 1 | ALTER USER 'user' PASSWORD EXPIRE NEVER -------------------------------------------------------------------------------- /tests/data/parser/parseAlterUser6.in: -------------------------------------------------------------------------------- 1 | ALTER USER 'user' ATTRIBUTE '{"baz": "faz", "foo": "moo"}'; -------------------------------------------------------------------------------- /tests/data/parser/parseAlterUser7.in: -------------------------------------------------------------------------------- 1 | ALTER USER 'user' PASSWORD EXPIRE INTERVAL 180 DAY; -------------------------------------------------------------------------------- /tests/data/parser/parseAlterUser8.in: -------------------------------------------------------------------------------- 1 | ALTER USER 'user' COMMENT '' -------------------------------------------------------------------------------- /tests/data/parser/parseAlterUser9.in: -------------------------------------------------------------------------------- 1 | ALTER USER 'bob'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('vp8LAf4#wu2V&Wi*iJWC#3KPotsHzx3u'); 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseAlterWithInvisible.in: -------------------------------------------------------------------------------- 1 | ALTER TABLE t MODIFY x INT INVISIBLE, MODIFY y INT, MODIFY z INT NOT NULL DEFAULT 4; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseAnalyzeErr1.in: -------------------------------------------------------------------------------- 1 | ANALYZE NO_WRITE_TO_BINLOG -------------------------------------------------------------------------------- /tests/data/parser/parseAnalyzeErr2.in: -------------------------------------------------------------------------------- 1 | ANALYZE -------------------------------------------------------------------------------- /tests/data/parser/parseAnalyzeTable.in: -------------------------------------------------------------------------------- 1 | ANALYZE TABLE tbl -------------------------------------------------------------------------------- /tests/data/parser/parseAnalyzeTable1.in: -------------------------------------------------------------------------------- 1 | ANALYZE NO_WRITE_TO_BINLOG TABLE tbl -------------------------------------------------------------------------------- /tests/data/parser/parseArrayErr1.in: -------------------------------------------------------------------------------- 1 | SELECT * FROM foo PARTITION bar, baz); -------------------------------------------------------------------------------- /tests/data/parser/parseArrayErr3.in: -------------------------------------------------------------------------------- 1 | SELECT * FROM foo PARTITION (bar, baz; -------------------------------------------------------------------------------- /tests/data/parser/parseCall.in: -------------------------------------------------------------------------------- 1 | CALL foo(); -------------------------------------------------------------------------------- /tests/data/parser/parseCall2.in: -------------------------------------------------------------------------------- 1 | CALL foo(@bar, @baz); -------------------------------------------------------------------------------- /tests/data/parser/parseCall3.in: -------------------------------------------------------------------------------- 1 | CALL foo; -------------------------------------------------------------------------------- /tests/data/parser/parseCall4.in: -------------------------------------------------------------------------------- 1 | call e();call f -------------------------------------------------------------------------------- /tests/data/parser/parseCall5.in: -------------------------------------------------------------------------------- 1 | call e;call f -------------------------------------------------------------------------------- /tests/data/parser/parseCreateDatabase.in: -------------------------------------------------------------------------------- 1 | CREATE DATABASE IF NOT EXISTS pma DEFAULT CHARSET 'utf8'; -------------------------------------------------------------------------------- /tests/data/parser/parseCreateDatabaseErr.in: -------------------------------------------------------------------------------- 1 | CREATE DATABASE IF NOT EXISTS pma ENGINE='InnoDB' DEFAULT CHARSET 'utf8' -------------------------------------------------------------------------------- /tests/data/parser/parseCreateFunction.in: -------------------------------------------------------------------------------- 1 | DELIMITER $$ 2 | CREATE FUNCTION F_TEST(uid INT) RETURNS VARCHAR 3 | BEGIN 4 | DECLARE username VARCHAR DEFAULT ""; 5 | SELECT username INTO username FROM users WHERE ID = uid; 6 | RETURN username; 7 | END -------------------------------------------------------------------------------- /tests/data/parser/parseCreateFunctionErr1.in: -------------------------------------------------------------------------------- 1 | DELIMITER $$ 2 | CREATE FUNCTION F_TEST(uid INT) 3 | BEGIN 4 | DECLARE username VARCHAR DEFAULT ""; 5 | SELECT username INTO username FROM users WHERE ID = uid; 6 | RETURN username; 7 | END -------------------------------------------------------------------------------- /tests/data/parser/parseCreateFunctionErr2.in: -------------------------------------------------------------------------------- 1 | CREATE FUNCTION test() RETURNS -------------------------------------------------------------------------------- /tests/data/parser/parseCreateFunctionErr3.in: -------------------------------------------------------------------------------- 1 | DELIMITER $$ 2 | CREATE FUNCTION coincide 3 | END;$$ 4 | -------------------------------------------------------------------------------- /tests/data/parser/parseCreateOrReplaceView1.in: -------------------------------------------------------------------------------- 1 | CREATE OR REPLACE VIEW xviewmytable AS SELECT mytable.id AS id, mytable.personid AS personid FROM mytable WHERE (mytable.birth > '1990-01-19') GROUP BY mytable.personid ; -------------------------------------------------------------------------------- /tests/data/parser/parseCreateProcedure.in: -------------------------------------------------------------------------------- 1 | DELIMITER $$ 2 | CREATE PROCEDURE P_TEST(uid INT) 3 | BEGIN 4 | SELECT username FROM users WHERE ID = uid; 5 | END -------------------------------------------------------------------------------- /tests/data/parser/parseCreateProcedure1.in: -------------------------------------------------------------------------------- 1 | CREATE DEFINER=`root`@`%` PROCEDURE `test2`(IN `_var` INT) NOT DETERMINISTIC NO SQL SQL SECURITY INVOKER SELECT _var -------------------------------------------------------------------------------- /tests/data/parser/parseCreateProcedure2.in: -------------------------------------------------------------------------------- 1 | DELIMITER $$ 2 | CREATE PROCEDURE P_TEST(IN uid INT, IN unused VARCHAR) 3 | BEGIN 4 | SELECT username FROM users WHERE ID = uid; 5 | END -------------------------------------------------------------------------------- /tests/data/parser/parseCreateProcedure3.in: -------------------------------------------------------------------------------- 1 | DELIMITER $$ 2 | CREATE DEFINER=`user`@`localhost` PROCEDURE `multiDBqueryRun_V1`(IN `query` TEXT, IN `table_name_var` VARCHAR(255), IN `columns_used_var` TEXT, IN `where_text_var` TEXT, IN `separator_value_var` VARCHAR(255)) COMMENT 'Query: SingleDB → MultiDB (All DBs) + run it' NOT DETERMINISTIC MODIFIES SQL DATA SQL SECURITY INVOKER BEGIN 3 | SET @TABLE_NAME = table_name_var; 4 | SET @WHERE_TEXT = where_text_var; 5 | SET @COLUMNS_USED = columns_used_var; 6 | SET @MULTIDB_QUERY = CONCAT('SELECT "$MULTIDB" FROM `$MULTIDB`.', @TABLE_NAME, @WHERE_TEXT); 7 | 8 | -- EXECUTION -- 9 | CREATE TEMPORARY TABLE `MULTIDB_TEMP_DB_TBL_COLS` AS 10 | SELECT * FROM ( 11 | SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME 12 | FROM INFORMATION_SCHEMA.COLUMNS 13 | WHERE 14 | TABLE_SCHEMA NOT IN('mysql', 'test', 'tmp', 'information_schema', 'sys', 'performance_schema') AND 15 | TABLE_NAME = @TABLE_NAME AND 16 | FIND_IN_SET(COLUMN_NAME, @COLUMNS_USED) 17 | ) tbl 18 | GROUP BY 19 | TABLE_SCHEMA, 20 | TABLE_NAME; 21 | 22 | SELECT GROUP_CONCAT(REPLACE(@MULTIDB_QUERY, '$MULTIDB', CONCAT('', TABLE_SCHEMA, '')) SEPARATOR "\nUNION ALL\n") 23 | INTO @stmt_sql 24 | FROM `MULTIDB_TEMP_DB_TBL_COLS`; 25 | 26 | PREPARE stmt FROM @stmt_sql; 27 | EXECUTE stmt; 28 | DEALLOCATE PREPARE stmt; 29 | END -------------------------------------------------------------------------------- /tests/data/parser/parseCreateSchema.in: -------------------------------------------------------------------------------- 1 | CREATE DATABASE IF NOT EXISTS pma DEFAULT CHARSET 'utf8'; -------------------------------------------------------------------------------- /tests/data/parser/parseCreateSchemaErr.in: -------------------------------------------------------------------------------- 1 | CREATE SCHEMA IF NOT EXISTS pma ENGINE='InnoDB' DEFAULT CHARSET 'utf8' -------------------------------------------------------------------------------- /tests/data/parser/parseCreateTable.in: -------------------------------------------------------------------------------- 1 | CREATE TABLE IF NOT EXISTS users ( 2 | `id` INT NOT NULL AUTO_INCREMENT, 3 | username VARCHAR(64) NULL, 4 | `password` VARCHAR(256) DEFAULT '123456', 5 | CONSTRAINT pk_id PRIMARY KEY (`id`), 6 | UNIQUE (username) 7 | ) ENGINE=InnoDB; -------------------------------------------------------------------------------- /tests/data/parser/parseCreateTable10.in: -------------------------------------------------------------------------------- 1 | CREATE TABLE `trips2` ( 2 | `id` bigint(20) UNSIGNED NOT NULL PRIMARY KEY COMMENT 'Unique trip Id', 3 | `trip_code` int(11) UNSIGNED NOT NULL COMMENT 'Trip code', 4 | `trip_category` int(11) UNSIGNED NOT NULL COMMENT 'Trip category', 5 | `trip_date` date NOT NULL COMMENT 'The trip date' 6 | ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'The trips'; -------------------------------------------------------------------------------- /tests/data/parser/parseCreateTable12.in: -------------------------------------------------------------------------------- 1 | CREATE OR REPLACE TABLE t1 (v1 INT) 2 | PARTITION BY KEY (v1) 3 | PARTITIONS 2; -------------------------------------------------------------------------------- /tests/data/parser/parseCreateTable13.in: -------------------------------------------------------------------------------- 1 | CREATE TABLE autos ( 2 | auto_id INT UNSIGNED NOT NULL AUTO_INCREMENT KEY, 3 | make VARCHAR(128), 4 | year INTEGER, 5 | mileage INTEGER 6 | ); -------------------------------------------------------------------------------- /tests/data/parser/parseCreateTable14.in: -------------------------------------------------------------------------------- 1 | CREATE TABLE autos ( 2 | auto_id INT UNSIGNED NOT NULL KEY, 3 | make VARCHAR(128), 4 | year INTEGER, 5 | mileage INTEGER 6 | ); -------------------------------------------------------------------------------- /tests/data/parser/parseCreateTable15.in: -------------------------------------------------------------------------------- 1 | CREATE TABLE autos ( 2 | auto_id INT UNSIGNED ZEROFILL NOT NULL KEY, 3 | make VARCHAR(128), 4 | year INTEGER, 5 | mileage INTEGER 6 | ); -------------------------------------------------------------------------------- /tests/data/parser/parseCreateTable16.in: -------------------------------------------------------------------------------- 1 | CREATE TABLE test ( 2 | user_id INT, 3 | INDEX `test` (user_id ASC) 4 | ) -------------------------------------------------------------------------------- /tests/data/parser/parseCreateTable17.in: -------------------------------------------------------------------------------- 1 | CREATE TABLE `autos8` ( 2 | `auto_id` int(10) UNSIGNED NOT NULL UNIQUE KEY, 3 | `make` varchar(128) DEFAULT NULL, 4 | `year` int(11) DEFAULT NULL, 5 | `mileage` int(11) DEFAULT NULL, 6 | `city` point NOT NULL, 7 | SPATIAL INDEX `city_index` (`city`) 8 | ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci; -------------------------------------------------------------------------------- /tests/data/parser/parseCreateTable18.in: -------------------------------------------------------------------------------- 1 | CREATE TABLE test ( 2 | id INT UNSIGNED NOT NULL AUTO_INCREMENT, 3 | data VARCHAR(64) DEFAULT NULL, 4 | ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 5 | PRIMARY KEY (id) 6 | ); -------------------------------------------------------------------------------- /tests/data/parser/parseCreateTable2.in: -------------------------------------------------------------------------------- 1 | CREATE TABLE `payment` ( 2 | `payment_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, 3 | `customer_id` smallint(5) unsigned NOT NULL, 4 | `staff_id` tinyint(3) unsigned NOT NULL, 5 | `rental_id` int(11) DEFAULT NULL, 6 | `amount` decimal(5,2) NOT NULL, 7 | `payment_date` datetime NOT NULL, 8 | `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 9 | PRIMARY KEY (`payment_id`), 10 | KEY `idx_fk_staff_id` (`staff_id`), 11 | KEY `idx_fk_customer_id` (`customer_id`), 12 | KEY `fk_payment_rental` (`rental_id`), 13 | CONSTRAINT `fk_payment_customer` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`customer_id`) ON UPDATE CASCADE, 14 | CONSTRAINT `fk_payment_rental` FOREIGN KEY (`rental_id`) REFERENCES `rental` (`rental_id`) ON DELETE SET NULL ON UPDATE CASCADE, 15 | CONSTRAINT `fk_payment_staff` FOREIGN KEY (`staff_id`) REFERENCES `staff` (`staff_id`) ON UPDATE CASCADE 16 | ) ENGINE=InnoDB AUTO_INCREMENT=16050 DEFAULT CHARSET=utf8 -------------------------------------------------------------------------------- /tests/data/parser/parseCreateTable3.in: -------------------------------------------------------------------------------- 1 | CREATE TABLE table1 ( 2 | a INT NOT NULL, 3 | b VARCHAR(32), 4 | c INT AS (a mod 10) VIRTUAL, 5 | d VARCHAR(5) AS (left(b,5)) PERSISTENT 6 | ); -------------------------------------------------------------------------------- /tests/data/parser/parseCreateTable4.in: -------------------------------------------------------------------------------- 1 | CREATE TABLE ts(id INT, purchased DATE) 2 | PARTITION BY /* comment */ RANGE(YEAR(purchased)) 3 | PARTITIONS 3 4 | SUBPARTITION BY HASH(TO_DAYS(purchased)) 5 | SUBPARTITIONS 2( 6 | PARTITION p0 7 | VALUES LESS THAN(1990)( 8 | SUBPARTITION s0, 9 | SUBPARTITION s1 10 | ), 11 | PARTITION p1 12 | VALUES LESS THAN(2000)( 13 | SUBPARTITION s2, 14 | SUBPARTITION s3 15 | ), 16 | PARTITION p2 17 | VALUES LESS THAN MAXVALUE( 18 | SUBPARTITION s4, 19 | SUBPARTITION s5 20 | ) 21 | ); -------------------------------------------------------------------------------- /tests/data/parser/parseCreateTable5.in: -------------------------------------------------------------------------------- 1 | CREATE TABLE new_table (`INT` VARCHAR(50) DEFAULT NULL); -------------------------------------------------------------------------------- /tests/data/parser/parseCreateTable6.in: -------------------------------------------------------------------------------- 1 | CREATE TABLE new_table (ACTION VARCHAR(50) DEFAULT NULL); 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseCreateTable7.in: -------------------------------------------------------------------------------- 1 | CREATE TABLE `ts` ( 2 | `id` int(11) DEFAULT NULL, 3 | `purchased` date DEFAULT NULL 4 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 5 | PARTITION BY RANGE (YEAR(purchased)) 6 | SUBPARTITION BY HASH (TO_DAYS(purchased)) 7 | ( 8 | PARTITION p0 VALUES LESS THAN (1990) ( 9 | SUBPARTITION s0 ENGINE=InnoDB, 10 | SUBPARTITION s1 ENGINE=InnoDB 11 | ), 12 | PARTITION p1 VALUES LESS THAN (2000) ( 13 | SUBPARTITION s2 ENGINE=InnoDB, 14 | SUBPARTITION s3 ENGINE=InnoDB 15 | ), 16 | PARTITION p2 VALUES LESS THAN MAXVALUE ( 17 | SUBPARTITION s4 ENGINE=InnoDB, 18 | SUBPARTITION s5 ENGINE=InnoDB 19 | ) 20 | ); 21 | -------------------------------------------------------------------------------- /tests/data/parser/parseCreateTable8.in: -------------------------------------------------------------------------------- 1 | CREATE TABLE `test1` ( 2 | `amultipoint` multipoint DEFAULT NULL, 3 | `amultipolygon` multipolygon DEFAULT NULL 4 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 -------------------------------------------------------------------------------- /tests/data/parser/parseCreateTableAsSelect.in: -------------------------------------------------------------------------------- 1 | CREATE TABLE new_tbl AS SELECT * FROM orig_tbl 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseCreateTableEnforcedCheck.in: -------------------------------------------------------------------------------- 1 | CREATE TABLE IF NOT EXISTS employees_check (FirstName varchar(30) CHECK (FirstName REGEXP '^T' AND FirstName REGEXP 'r$') ENFORCED); -------------------------------------------------------------------------------- /tests/data/parser/parseCreateTableErr1.in: -------------------------------------------------------------------------------- 1 | CREATE TABLE IF NOT EXISTS users ( 2 | `id` UNKNOWN 3 | ) ENGINE=InnoDB; -------------------------------------------------------------------------------- /tests/data/parser/parseCreateTableErr2.in: -------------------------------------------------------------------------------- 1 | CREATE TABLE -------------------------------------------------------------------------------- /tests/data/parser/parseCreateTableErr3.in: -------------------------------------------------------------------------------- 1 | CREATE TABLE `table_copy` LIKE ; -------------------------------------------------------------------------------- /tests/data/parser/parseCreateTableErr4.in: -------------------------------------------------------------------------------- 1 | CREATE TABLE new_table (INT VARCHAR(50) DEFAULT NULL); -------------------------------------------------------------------------------- /tests/data/parser/parseCreateTableErr5.in: -------------------------------------------------------------------------------- 1 | CREATE TABLE new_table (666 VARCHAR(50) DEFAULT NULL); 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseCreateTableLike.in: -------------------------------------------------------------------------------- 1 | CREATE TABLE `table_copy` LIKE `old_table`; -------------------------------------------------------------------------------- /tests/data/parser/parseCreateTableNotEnforcedCheck.in: -------------------------------------------------------------------------------- 1 | CREATE TABLE IF NOT EXISTS employees_check (FirstName varchar(30) CHECK (FirstName REGEXP '^T' AND FirstName REGEXP 'r$') NOT ENFORCED); -------------------------------------------------------------------------------- /tests/data/parser/parseCreateTableSRID.in: -------------------------------------------------------------------------------- 1 | CREATE TABLE IF NOT EXISTS `public_areas` ( 2 | `id` INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, 3 | `kind` enum('COUNTRY','REGION','DEPARTMENT','MUNICIPALITY') NOT NULL, 4 | `area` geometry NOT NULL SRID 4326, 5 | `properties` json NOT NULL, 6 | `title` varchar(100) NOT NULL 7 | ); -------------------------------------------------------------------------------- /tests/data/parser/parseCreateTableSelect.in: -------------------------------------------------------------------------------- 1 | CREATE TABLE new_tbl SELECT * FROM orig_tbl 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseCreateTableSpatial.in: -------------------------------------------------------------------------------- 1 | CREATE TABLE `xss`.`gis` ( `x` POINT NOT NULL ) ENGINE = InnoDB; -------------------------------------------------------------------------------- /tests/data/parser/parseCreateTableTimestampWithPrecision.in: -------------------------------------------------------------------------------- 1 | CREATE TABLE `aa` ( 2 | `id` int(11) NOT NULL, 3 | `rTime` timestamp(3) NOT NULL DEFAULT '0000-00-00 00:00:00.000' ON UPDATE CURRENT_TIMESTAMP(3), 4 | PRIMARY KEY (`id`) 5 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -------------------------------------------------------------------------------- /tests/data/parser/parseCreateTableWithInvisibleKey.in: -------------------------------------------------------------------------------- 1 | CREATE TABLE `animes_comments` ( 2 | `anime_comment_id` bigint unsigned NOT NULL AUTO_INCREMENT, 3 | `anime_id` bigint unsigned NOT NULL, 4 | `user_id` bigint unsigned NOT NULL, 5 | `comment_text` varchar(500) COLLATE utf8mb4_general_ci DEFAULT NULL, 6 | `comment_at` datetime DEFAULT NULL, 7 | PRIMARY KEY (`anime_comment_id`), 8 | KEY `animes_comments_animes_fk` (`anime_id`) invisible, 9 | KEY `animes_comments_users_fk` (`user_id`), 10 | KEY `comment_at_idx` (`comment_at`) , 11 | CONSTRAINT `animes_comments_animes_fk` FOREIGN KEY (`anime_id`) REFERENCES `animes` (`anime_id`) ON DELETE CASCADE ON UPDATE RESTRICT, 12 | CONSTRAINT `animes_comments_users_fk` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE RESTRICT) -------------------------------------------------------------------------------- /tests/data/parser/parseCreateTableWithParser.in: -------------------------------------------------------------------------------- 1 | CREATE TABLE `mytable` ( 2 | `column_one` VARCHAR(255) DEFAULT NULL, 3 | FULLTEXT KEY `fulltext_index` (`column_one`) /*!50100 WITH PARSER `ngram` */, 4 | CONSTRAINT `my_constraint_1` FOREIGN KEY (`column_one`) REFERENCES `other_table` (`column_two`) ON DELETE RESTRICT ON UPDATE RESTRICT 5 | ) 6 | -------------------------------------------------------------------------------- /tests/data/parser/parseCreateTrigger.in: -------------------------------------------------------------------------------- 1 | CREATE TRIGGER ins_sum BEFORE INSERT ON account 2 | FOR EACH ROW BEGIN SET @sum = @sum + NEW.amount END -------------------------------------------------------------------------------- /tests/data/parser/parseCreateUser1.in: -------------------------------------------------------------------------------- 1 | CREATE USER test -------------------------------------------------------------------------------- /tests/data/parser/parseCreateUser2.in: -------------------------------------------------------------------------------- 1 | CREATE USER 'bob'@'localhost' 2 | IDENTIFIED VIA mysql_native_password USING PASSWORD('vp8LAf4#wu2V&Wi*iJWC#3KPotsHzx3u') 3 | OR unix_socket; 4 | 5 | -------------------------------------------------------------------------------- /tests/data/parser/parseCreateView.in: -------------------------------------------------------------------------------- 1 | CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY INVOKER VIEW `sakila`.`actor_info` AS select `a`.`actor_id` AS `actor_id`,`a`.`first_name` AS `first_name`,`a`.`last_name` AS `last_name`,group_concat(distinct concat(`c`.`name`,': ',(select group_concat(`f`.`title` order by `f`.`title` ASC separator ', ') from ((`sakila`.`film` `f` join `sakila`.`film_category` `fc` on((`f`.`film_id` = `fc`.`film_id`))) join `sakila`.`film_actor` `fa` on((`f`.`film_id` = `fa`.`film_id`))) where ((`fc`.`category_id` = `c`.`category_id`) and (`fa`.`actor_id` = `a`.`actor_id`)))) order by `c`.`name` ASC separator '; ') AS `film_info` from (((`sakila`.`actor` `a` left join `sakila`.`film_actor` `fa` on((`a`.`actor_id` = `fa`.`actor_id`))) left join `sakila`.`film_category` `fc` on((`fa`.`film_id` = `fc`.`film_id`))) left join `sakila`.`category` `c` on((`fc`.`category_id` = `c`.`category_id`))) group by `a`.`actor_id`,`a`.`first_name`,`a`.`last_name` -------------------------------------------------------------------------------- /tests/data/parser/parseCreateView2.in: -------------------------------------------------------------------------------- 1 | CREATE VIEW myView (vid, vfirstname) AS 2 | SELECT id, first_name FROM employee WHERE id = 1; -------------------------------------------------------------------------------- /tests/data/parser/parseCreateView3.in: -------------------------------------------------------------------------------- 1 | CREATE VIEW GoodStudent AS 2 | SELECT `one space`, `two spaces` 3 | FROM `Une table espace` 4 | WHERE `one space` > 3.0 5 | WITH CHECK OPTION 6 | -------------------------------------------------------------------------------- /tests/data/parser/parseCreateView4.in: -------------------------------------------------------------------------------- 1 | CREATE VIEW v (mycol) AS SELECT 'abc'; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseCreateView5.in: -------------------------------------------------------------------------------- 1 | CREATE VIEW `t3` as SELECT `t1` IS NOT NULL AS `is_not_null` FROM `test3`; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseCreateViewAsWithAs.in: -------------------------------------------------------------------------------- 1 | -- create first view 2 | CREATE VIEW withclause AS 3 | 4 | WITH cte AS ( 5 | SELECT p.name, p.shape 6 | FROM gis_all as p 7 | ) 8 | 9 | SELECT cte.* 10 | FROM cte 11 | CROSS JOIN gis_all; 12 | -- create second view 13 | CREATE VIEW withclause2 AS 14 | 15 | WITH cte AS ( 16 | SELECT p.name, p.shape 17 | FROM gis_all as p 18 | ), cte2 AS ( 19 | SELECT p.name as n2, p.shape as sh2 20 | FROM gis_all as p 21 | ) 22 | 23 | SELECT cte.*,cte2.* 24 | FROM cte,cte2 25 | CROSS JOIN gis_all; -------------------------------------------------------------------------------- /tests/data/parser/parseCreateViewMultiple.in: -------------------------------------------------------------------------------- 1 | CREATE TABLE T1 (COL1 CHAR(10)) 2 | 3 | CREATE VIEW V1 AS SELECT COL1 4 | FROM T1 WHERE COL1 LIKE 'A%' 5 | 6 | CREATE VIEW V2 AS SELECT COL1 7 | FROM V1 WHERE COL1 LIKE '%Z' 8 | WITH LOCAL CHECK OPTION 9 | 10 | CREATE VIEW V3 AS SELECT COL1 11 | FROM V2 WHERE COL1 LIKE 'AB%' 12 | 13 | CREATE VIEW V4 AS SELECT COL1 14 | FROM V3 WHERE COL1 LIKE '%YZ' 15 | WITH CASCADED CHECK OPTION 16 | 17 | CREATE VIEW V5 AS SELECT COL1 18 | FROM V4 WHERE COL1 LIKE 'ABC%' 19 | -------------------------------------------------------------------------------- /tests/data/parser/parseCreateViewWithQuotes.in: -------------------------------------------------------------------------------- 1 | CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` 2 | SQL SECURITY DEFINER VIEW `test_view` AS 3 | select `email_content`.`content_id` AS `content_id`, 4 | `email_content`.`brand_id` AS `brand_id` from `email_content`; -------------------------------------------------------------------------------- /tests/data/parser/parseCreateViewWithUnion.in: -------------------------------------------------------------------------------- 1 | CREATE VIEW `employees_view` AS 2 | SELECT * 3 | FROM 4 | `employees` 5 | WHERE 6 | `employees`.`gender` = 'M' 7 | UNION 8 | SELECT * 9 | FROM 10 | `employees` 11 | WHERE 12 | `employees`.`gender` = 'F'; -------------------------------------------------------------------------------- /tests/data/parser/parseCreateViewWithWrongSyntax.in: -------------------------------------------------------------------------------- 1 | CREATE VIEW abc AS SELECT a, b, FROM a -------------------------------------------------------------------------------- /tests/data/parser/parseCreateViewWithoutQuotes.in: -------------------------------------------------------------------------------- 1 | CREATE ALGORITHM=UNDEFINED DEFINER=root@localhost 2 | SQL SECURITY DEFINER VIEW `test_view` AS 3 | select `email_content`.`content_id` AS `content_id`, 4 | `email_content`.`brand_id` AS `brand_id` from `email_content`; -------------------------------------------------------------------------------- /tests/data/parser/parseDelete.in: -------------------------------------------------------------------------------- 1 | DELETE LOW_PRIORITY 2 | /* */ 3 | FROM 4 | `test`.users 5 | WHERE 6 | `id`<3 AND (username="Dan" or username="Paul") 7 | ORDER BY 8 | id 9 | ; -------------------------------------------------------------------------------- /tests/data/parser/parseDelete10.in: -------------------------------------------------------------------------------- 1 | DELETE QUICK table1, table2.* FROM table1 as t1, table2 as t2 WHERE 1=1 -------------------------------------------------------------------------------- /tests/data/parser/parseDelete11.in: -------------------------------------------------------------------------------- 1 | DELETE QUICK FROM table1, table2.* USING table1 AS `t1`, table2 AS `t2` WHERE 1=1 -------------------------------------------------------------------------------- /tests/data/parser/parseDelete12.in: -------------------------------------------------------------------------------- 1 | DELETE QUICK FROM table1 WHERE 1=1 LIMIT 0, 25 -------------------------------------------------------------------------------- /tests/data/parser/parseDelete13.in: -------------------------------------------------------------------------------- 1 | DELETE FROM emp x WHERE x.salary = 20 -------------------------------------------------------------------------------- /tests/data/parser/parseDelete2.in: -------------------------------------------------------------------------------- 1 | DELETE IGNORE FROM t1 -------------------------------------------------------------------------------- /tests/data/parser/parseDelete3.in: -------------------------------------------------------------------------------- 1 | DELETE IGNORE FROM t1 WHERE 1=1 -------------------------------------------------------------------------------- /tests/data/parser/parseDelete4.in: -------------------------------------------------------------------------------- 1 | DELETE IGNORE FROM t1 WHERE 1=1 ORDER BY id -------------------------------------------------------------------------------- /tests/data/parser/parseDelete5.in: -------------------------------------------------------------------------------- 1 | DELETE IGNORE FROM t1 WHERE 1=1 ORDER BY id LIMIT 0,25 -------------------------------------------------------------------------------- /tests/data/parser/parseDelete6.in: -------------------------------------------------------------------------------- 1 | DELETE IGNORE FROM t1 ORDER BY id -------------------------------------------------------------------------------- /tests/data/parser/parseDelete7.in: -------------------------------------------------------------------------------- 1 | DELETE IGNORE FROM t1 ORDER BY id LIMIT 0,25 -------------------------------------------------------------------------------- /tests/data/parser/parseDelete8.in: -------------------------------------------------------------------------------- 1 | DELETE IGNORE FROM t1 LIMIT 0, 25 -------------------------------------------------------------------------------- /tests/data/parser/parseDelete9.in: -------------------------------------------------------------------------------- 1 | DELETE QUICK table1, table2.* FROM table1 as t1, table2 as t2 -------------------------------------------------------------------------------- /tests/data/parser/parseDeleteErr1.in: -------------------------------------------------------------------------------- 1 | DELETE QUICK USING table1, table2.* -------------------------------------------------------------------------------- /tests/data/parser/parseDeleteErr10.in: -------------------------------------------------------------------------------- 1 | DELETE QUICK FROM table1, table2 USING t1 as t,t2 as tt ASC a =1; -------------------------------------------------------------------------------- /tests/data/parser/parseDeleteErr11.in: -------------------------------------------------------------------------------- 1 | DELETE QUICK FROM table1 WHERE a = 1 ASC -------------------------------------------------------------------------------- /tests/data/parser/parseDeleteErr12.in: -------------------------------------------------------------------------------- 1 | DELETE QUICK FROM table1, table2 USING t1 as t,t2 as tt as ttt WHEE a =1; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseDeleteErr2.in: -------------------------------------------------------------------------------- 1 | DELETE QUICK table1, table2.* USING table1 AS `t1`, table2 AS `t2` WHERE 1=1 -------------------------------------------------------------------------------- /tests/data/parser/parseDeleteErr3.in: -------------------------------------------------------------------------------- 1 | DELETE QUICK table1, table2.* table1 AS `t1` table2 AS `t2` WHERE 1=1 -------------------------------------------------------------------------------- /tests/data/parser/parseDeleteErr4.in: -------------------------------------------------------------------------------- 1 | DELETE QUICK FROM table1, table2.* table1 AS `t1` USING table2 AS `t2` WHERE 1=1 ORDER BY id ASC -------------------------------------------------------------------------------- /tests/data/parser/parseDeleteErr5.in: -------------------------------------------------------------------------------- 1 | DELETE QUICK FROM table1 WHERE 1=1 ORDER BY id ASC WHERE 1=1 -------------------------------------------------------------------------------- /tests/data/parser/parseDeleteErr6.in: -------------------------------------------------------------------------------- 1 | DELETE QUICK FROM table1, table2.* table1 AS `t1` USING table2 AS `t2` WHERE 1=1 LIMIT 0, 25 -------------------------------------------------------------------------------- /tests/data/parser/parseDeleteErr7.in: -------------------------------------------------------------------------------- 1 | DELETE QUICK FROM table1 WHERE a = 1 ORDER BY id ASC WHERE -------------------------------------------------------------------------------- /tests/data/parser/parseDeleteErr8.in: -------------------------------------------------------------------------------- 1 | DELETE QUICK FROM table1 ASC -------------------------------------------------------------------------------- /tests/data/parser/parseDeleteErr9.in: -------------------------------------------------------------------------------- 1 | DELETE QUICK FROM table1, table2 USING t1 as t,t2 as tt WHEE a =1; -------------------------------------------------------------------------------- /tests/data/parser/parseDeleteJoin.in: -------------------------------------------------------------------------------- 1 | DELETE t1, t2 FROM t1 INNER JOIN t2 INNER JOIN t3 WHERE t1.id=t2.id AND t2.id=t3.id -------------------------------------------------------------------------------- /tests/data/parser/parseDelimiter.in: -------------------------------------------------------------------------------- 1 | SELECT * FROM foo; 2 | DELIMITER $$ 3 | SELECT * FROM bar$$ 4 | DELIMITER ; 5 | SELECT * FROM baz; -------------------------------------------------------------------------------- /tests/data/parser/parseDrop.in: -------------------------------------------------------------------------------- 1 | DROP USER IF EXISTS 'testtest'@'%'; -------------------------------------------------------------------------------- /tests/data/parser/parseDrop2.in: -------------------------------------------------------------------------------- 1 | DROP USER 'testtest'@'%'; -------------------------------------------------------------------------------- /tests/data/parser/parseExplain.in: -------------------------------------------------------------------------------- 1 | EXPLAIN SELECT * FROM test; -------------------------------------------------------------------------------- /tests/data/parser/parseExplain1.in: -------------------------------------------------------------------------------- 1 | ANALYZE SELECT * FROM orders -------------------------------------------------------------------------------- /tests/data/parser/parseExplain10.in: -------------------------------------------------------------------------------- 1 | DESC REPLACE INTO test VALUES (1, 'Old', '2014-08-20 18:47:00'); -------------------------------------------------------------------------------- /tests/data/parser/parseExplain11.in: -------------------------------------------------------------------------------- 1 | ANALYSE REPLACE INTO test VALUES (1, 'Old', '2014-08-20 18:47:00'); 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseExplain12.in: -------------------------------------------------------------------------------- 1 | EXPLAIN FORMAT=json REPLACE INTO test VALUES (1, 'Old', '2014-08-20 18:47:00'); -------------------------------------------------------------------------------- /tests/data/parser/parseExplain13.in: -------------------------------------------------------------------------------- 1 | DESCRIBE FORMAT=json REPLACE INTO test VALUES (1, 'Old', '2014-08-20 18:47:00'); -------------------------------------------------------------------------------- /tests/data/parser/parseExplain14.in: -------------------------------------------------------------------------------- 1 | DESC TABLE `fo` ORDER BY `fo`.`uuid` ASC; -------------------------------------------------------------------------------- /tests/data/parser/parseExplain2.in: -------------------------------------------------------------------------------- 1 | DESC tablename -------------------------------------------------------------------------------- /tests/data/parser/parseExplain3.in: -------------------------------------------------------------------------------- 1 | EXPLAIN ANALYZE SELECT first_name, last_name, SUM(amount) AS total FROM staff INNER JOIN payment ON staff.staff_id = payment.staff_id AND payment_date LIKE '2005-08%' GROUP BY first_name, last_name; -------------------------------------------------------------------------------- /tests/data/parser/parseExplain4.in: -------------------------------------------------------------------------------- 1 | EXPLAIN FORMAT=TREE SELECT * FROM db -------------------------------------------------------------------------------- /tests/data/parser/parseExplain5.in: -------------------------------------------------------------------------------- 1 | DESC phpmyadmin.pma__users; -------------------------------------------------------------------------------- /tests/data/parser/parseExplain6.in: -------------------------------------------------------------------------------- 1 | DESCRIBE Shop 'N%'; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseExplain7.in: -------------------------------------------------------------------------------- 1 | DESCRIBE Shop 'Name'; -------------------------------------------------------------------------------- /tests/data/parser/parseExplain8.in: -------------------------------------------------------------------------------- 1 | DESCRIBE Shop N__e; -------------------------------------------------------------------------------- /tests/data/parser/parseExplain9.in: -------------------------------------------------------------------------------- 1 | DESCRIBE tablename 581 -------------------------------------------------------------------------------- /tests/data/parser/parseExplainErr.in: -------------------------------------------------------------------------------- 1 | EXPLAIN FOR SELECT * -------------------------------------------------------------------------------- /tests/data/parser/parseExplainErr1.in: -------------------------------------------------------------------------------- 1 | ANALYZE SELECT FROM -------------------------------------------------------------------------------- /tests/data/parser/parseExplainErr2.in: -------------------------------------------------------------------------------- 1 | EXPLAIN ANALYZE FROM TABLE -------------------------------------------------------------------------------- /tests/data/parser/parseExplainErr3.in: -------------------------------------------------------------------------------- 1 | EXPLAIN -------------------------------------------------------------------------------- /tests/data/parser/parseInsert.in: -------------------------------------------------------------------------------- 1 | INSERT LOW_PRIORITY 2 | INTO 3 | users(`id`, `username`, `password`) 4 | VALUES 5 | (1, "Dan", "5d41402abc4b2a76b9719d911017c592"), 6 | (2, "Paul", "7d793037a0760186574b0282f2f435e7"); -------------------------------------------------------------------------------- /tests/data/parser/parseInsertErr.in: -------------------------------------------------------------------------------- 1 | INSERT SELECT 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseInsertErr2.in: -------------------------------------------------------------------------------- 1 | INSERT INTO x "string" 2 | 3 | -------------------------------------------------------------------------------- /tests/data/parser/parseInsertFunction.in: -------------------------------------------------------------------------------- 1 | INSERT INTO labels(`label`) 2 | VALUES (concat('A', ' ', 'label')); -------------------------------------------------------------------------------- /tests/data/parser/parseInsertIntoErr.in: -------------------------------------------------------------------------------- 1 | INSERT INTO x INSERT 2 | 3 | -------------------------------------------------------------------------------- /tests/data/parser/parseInsertIntoSet.in: -------------------------------------------------------------------------------- 1 | INSERT INTO aa SET = INET6_ATON('::ffff:8.8.8.8') -------------------------------------------------------------------------------- /tests/data/parser/parseInsertOnDuplicateKey.in: -------------------------------------------------------------------------------- 1 | INSERT INTO `champs` (`id`,`val`) VALUES (412,'Thresh') 2 | ON DUPLICATE KEY UPDATE `id`=412,`val`='Thresh' -------------------------------------------------------------------------------- /tests/data/parser/parseInsertOnDuplicateKeyErr.in: -------------------------------------------------------------------------------- 1 | INSERT INTO `champs` (`id`,`val`) VALUES (412,'Thresh') 2 | ON DUPLICATE KEY `id`=412,`val`='Thresh' -------------------------------------------------------------------------------- /tests/data/parser/parseInsertSelect.in: -------------------------------------------------------------------------------- 1 | INSERT INTO `a` (`value`) SELECT `b`.`value` FROM `b` -------------------------------------------------------------------------------- /tests/data/parser/parseInsertSelectOnDuplicateKey.in: -------------------------------------------------------------------------------- 1 | INSERT INTO tbl SELECT * FROM bar ON DUPLICATE KEY UPDATE baz = 1 -------------------------------------------------------------------------------- /tests/data/parser/parseInsertSet.in: -------------------------------------------------------------------------------- 1 | INSERT INTO `a` (`value`) SET `value` = '123' -------------------------------------------------------------------------------- /tests/data/parser/parseInsertSetOnDuplicateKey.in: -------------------------------------------------------------------------------- 1 | INSERT INTO `a` (`value`) SET `value` = '123' ON DUPLICATE KEY UPDATE `value` = '1234' -------------------------------------------------------------------------------- /tests/data/parser/parseKill.in: -------------------------------------------------------------------------------- 1 | KILL 1 -------------------------------------------------------------------------------- /tests/data/parser/parseKill2.in: -------------------------------------------------------------------------------- 1 | KILL (SELECT 3 + 4) -------------------------------------------------------------------------------- /tests/data/parser/parseKill3.in: -------------------------------------------------------------------------------- 1 | KILL QUERY ID 10 -------------------------------------------------------------------------------- /tests/data/parser/parseKillConnection.in: -------------------------------------------------------------------------------- 1 | KILL CONNECTION 1 -------------------------------------------------------------------------------- /tests/data/parser/parseKillErr1.in: -------------------------------------------------------------------------------- 1 | KILL CONNECTION QUERY 1 -------------------------------------------------------------------------------- /tests/data/parser/parseKillErr2.in: -------------------------------------------------------------------------------- 1 | KILL -------------------------------------------------------------------------------- /tests/data/parser/parseKillErr3.in: -------------------------------------------------------------------------------- 1 | KILL (SELECT) -------------------------------------------------------------------------------- /tests/data/parser/parseKillErr4.in: -------------------------------------------------------------------------------- 1 | KILL (INSERT) -------------------------------------------------------------------------------- /tests/data/parser/parseKillQuery.in: -------------------------------------------------------------------------------- 1 | KILL QUERY 1 -------------------------------------------------------------------------------- /tests/data/parser/parseLimitErr1.in: -------------------------------------------------------------------------------- 1 | SELECT * FROM test LIMIT 1 OFFSET OFFSET 2; -------------------------------------------------------------------------------- /tests/data/parser/parseLimitErr2.in: -------------------------------------------------------------------------------- 1 | SELECT * FROM test LIMIT 1 OFFSET -------------------------------------------------------------------------------- /tests/data/parser/parseLoad1.in: -------------------------------------------------------------------------------- 1 | LOAD DATA CONCURRENT INFILE 'employee1.txt' INTO TABLE employee; -------------------------------------------------------------------------------- /tests/data/parser/parseLoad2.in: -------------------------------------------------------------------------------- 1 | LOAD DATA INFILE '/tmp/test.txt' INTO TABLE test FIELDS TERMINATED BY ',' IGNORE 1 LINES; -------------------------------------------------------------------------------- /tests/data/parser/parseLoad3.in: -------------------------------------------------------------------------------- 1 | LOAD DATA INFILE 'employee3.txt' INTO TABLE employee FIELDS TERMINATED BY ',' ENCLOSED BY '"'; -------------------------------------------------------------------------------- /tests/data/parser/parseLoad4.in: -------------------------------------------------------------------------------- 1 | LOAD DATA INFILE '/tmp/test.txt' IGNORE 2 | INTO TABLE test 3 | CHARACTER SET 'utf8' 4 | COLUMNS TERMINATED BY ',' 5 | LINES TERMINATED BY ';' 6 | IGNORE 1 LINES 7 | (col1, col2) 8 | SET @a = 1; -------------------------------------------------------------------------------- /tests/data/parser/parseLoad5.in: -------------------------------------------------------------------------------- 1 | LOAD DATA INFILE '/tmp/test.txt' REPLACE INTO TABLE test COLUMNS TERMINATED BY ',' IGNORE 1 ROWS; -------------------------------------------------------------------------------- /tests/data/parser/parseLoad6.in: -------------------------------------------------------------------------------- 1 | LOAD DATA INFILE '/tmp/test.txt' IGNORE 2 | INTO TABLE test 3 | PARTITION (p0, p1, p2) 4 | CHARACTER SET 'utf8' 5 | COLUMNS TERMINATED BY ',' 6 | LINES TERMINATED BY ';' 7 | IGNORE 1 LINES 8 | (col1, col2) 9 | SET @a = 1; -------------------------------------------------------------------------------- /tests/data/parser/parseLoad7.in: -------------------------------------------------------------------------------- 1 | SELECT a 2 | into outfile '/tmp/temp.data' 3 | fields terminated by ',' enclosed by '"' ESCAPED BY '$' 4 | FROM sometable -------------------------------------------------------------------------------- /tests/data/parser/parseLoad8.in: -------------------------------------------------------------------------------- 1 | -- Query from https://github.com/phpmyadmin/sql-parser/issues/578 2 | -- Issue was that Lexer detected ".e1" as number token. 3 | 4 | LOAD DATA LOCAL INFILE '/home/user/myloadfile.csv' 5 | IGNORE INTO TABLE erp.e1_table 6 | FIELDS TERMINATED BY '\t' 7 | LINES TERMINATED BY '\n' 8 | IGNORE 0 LINES; 9 | -------------------------------------------------------------------------------- /tests/data/parser/parseLoadErr1.in: -------------------------------------------------------------------------------- 1 | LOAD DATA CONCURRENT FROM 'employee1.txt' INTO TABLE employee; -------------------------------------------------------------------------------- /tests/data/parser/parseLoadErr2.in: -------------------------------------------------------------------------------- 1 | LOAD DATA CONCURRENT ABC 'employee1.txt' INTO TABLE employee; -------------------------------------------------------------------------------- /tests/data/parser/parseLoadErr3.in: -------------------------------------------------------------------------------- 1 | LOAD DATA INFILE '/tmp/test.txt' IGNORE 2 | INTO TABLE test 3 | DATA @a = 1; -------------------------------------------------------------------------------- /tests/data/parser/parseLoadErr4.in: -------------------------------------------------------------------------------- 1 | LOAD DATA INFILE '/tmp/test.txt' IGNORE 2 | INTO test 3 | DATA @a = 1; -------------------------------------------------------------------------------- /tests/data/parser/parseLoadErr5.in: -------------------------------------------------------------------------------- 1 | LOAD DATA INFILE '/tmp/test.txt' IGNORE 2 | INTO TABLE test 3 | @a = 1; -------------------------------------------------------------------------------- /tests/data/parser/parseLoadErr6.in: -------------------------------------------------------------------------------- 1 | LOAD DATA INFILE '/tmp/test.txt' IGNORE 2 | INTO TABLE test 3 | DATA @a = 1; -------------------------------------------------------------------------------- /tests/data/parser/parseLock1.in: -------------------------------------------------------------------------------- 1 | LOCK TABLES table1 AS `t1` READ LOCAL; -------------------------------------------------------------------------------- /tests/data/parser/parseLock2.in: -------------------------------------------------------------------------------- 1 | LOCK TABLES table1 AS `t1` READ; -------------------------------------------------------------------------------- /tests/data/parser/parseLock3.in: -------------------------------------------------------------------------------- 1 | LOCK TABLES table1 AS `t1` LOW_PRIORITY WRITE; -------------------------------------------------------------------------------- /tests/data/parser/parseLock4.in: -------------------------------------------------------------------------------- 1 | LOCK TABLES table1 AS `t1` WRITE; -------------------------------------------------------------------------------- /tests/data/parser/parseLock5.in: -------------------------------------------------------------------------------- 1 | LOCK TABLES table1 AS `t1` READ LOCAL, table2 AS `t2` WRITE; -------------------------------------------------------------------------------- /tests/data/parser/parseLock6.in: -------------------------------------------------------------------------------- 1 | LOCK TABLES table1 READ LOCAL, table2 AS `t2` WRITE; -------------------------------------------------------------------------------- /tests/data/parser/parseLockErr1.in: -------------------------------------------------------------------------------- 1 | LOCK TABLES table1 -------------------------------------------------------------------------------- /tests/data/parser/parseLockErr10.in: -------------------------------------------------------------------------------- 1 | LOCK TABLES table1 AS table1 LOW_PRIORITY WRITE abc -------------------------------------------------------------------------------- /tests/data/parser/parseLockErr2.in: -------------------------------------------------------------------------------- 1 | LOCK TABLES table1 AS `t1` LOCAL -------------------------------------------------------------------------------- /tests/data/parser/parseLockErr3.in: -------------------------------------------------------------------------------- 1 | -- TABLES misspelled 2 | LOCK TABLE table1 AS t1 READ -------------------------------------------------------------------------------- /tests/data/parser/parseLockErr4.in: -------------------------------------------------------------------------------- 1 | -- missing TABLES keyword 2 | LOCK table1 READ LOCAL -------------------------------------------------------------------------------- /tests/data/parser/parseLockErr5.in: -------------------------------------------------------------------------------- 1 | -- extraneous comma 2 | LOCK TABLES table1 READ LOCAL, -------------------------------------------------------------------------------- /tests/data/parser/parseLockErr6.in: -------------------------------------------------------------------------------- 1 | -- missing lock type 2 | LOCK TABLES table1 -------------------------------------------------------------------------------- /tests/data/parser/parseLockErr7.in: -------------------------------------------------------------------------------- 1 | LOCK TABLES table1 AS table1 non_keyword -------------------------------------------------------------------------------- /tests/data/parser/parseLockErr8.in: -------------------------------------------------------------------------------- 1 | LOCK TABLES table1 AS table1 READ AUTO_INCREMENT -------------------------------------------------------------------------------- /tests/data/parser/parseLockErr9.in: -------------------------------------------------------------------------------- 1 | LOCK TABLES table1 AS table1 LOW_PRIORITY READ -------------------------------------------------------------------------------- /tests/data/parser/parsePurge.in: -------------------------------------------------------------------------------- 1 | PURGE BINARY LOGS TO 'mysql-bin.010'; -------------------------------------------------------------------------------- /tests/data/parser/parsePurge2.in: -------------------------------------------------------------------------------- 1 | PURGE BINARY LOGS BEFORE '2008-04-02 22:46:26'; -------------------------------------------------------------------------------- /tests/data/parser/parsePurge3.in: -------------------------------------------------------------------------------- 1 | PURGE MASTER LOGS BEFORE '2008-04-02 22:46:26'; -------------------------------------------------------------------------------- /tests/data/parser/parsePurge4.in: -------------------------------------------------------------------------------- 1 | PURGE MASTER LOGS TO 'mysql-bin.010'; -------------------------------------------------------------------------------- /tests/data/parser/parsePurgeErr.in: -------------------------------------------------------------------------------- 1 | PURGE LOGS TO 'mysql-bin.010'; -------------------------------------------------------------------------------- /tests/data/parser/parsePurgeErr2.in: -------------------------------------------------------------------------------- 1 | PURGE BINARY LOGS INTO; -------------------------------------------------------------------------------- /tests/data/parser/parsePurgeErr3.in: -------------------------------------------------------------------------------- 1 | PURGE BINARY LOGS TO 'mysql.bin' INTO; -------------------------------------------------------------------------------- /tests/data/parser/parseRename.in: -------------------------------------------------------------------------------- 1 | RENAME TABLE foo TO bar -------------------------------------------------------------------------------- /tests/data/parser/parseRename2.in: -------------------------------------------------------------------------------- 1 | RENAME TABLE foo TO bar, baz TO qux; -------------------------------------------------------------------------------- /tests/data/parser/parseRenameErr1.in: -------------------------------------------------------------------------------- 1 | RENAME TABLE a TO TO -------------------------------------------------------------------------------- /tests/data/parser/parseRenameErr2.in: -------------------------------------------------------------------------------- 1 | RENAME TABLE TABLE -------------------------------------------------------------------------------- /tests/data/parser/parseRenameErr3.in: -------------------------------------------------------------------------------- 1 | RENAME TABLE a FROM -------------------------------------------------------------------------------- /tests/data/parser/parseRenameErr4.in: -------------------------------------------------------------------------------- 1 | RENAME TABLE foo TO bar TO -------------------------------------------------------------------------------- /tests/data/parser/parseRenameErr5.in: -------------------------------------------------------------------------------- 1 | RENAME 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseReplace.in: -------------------------------------------------------------------------------- 1 | REPLACE LOW_PRIORITY 2 | INTO users(id, username) 3 | VALUES (1, 'Foo'), (2, 'Bar') -------------------------------------------------------------------------------- /tests/data/parser/parseReplace2.in: -------------------------------------------------------------------------------- 1 | REPLACE LOW_PRIORITY 2 | INTO users 3 | SET id = 1, 4 | username = 'Bar'; -------------------------------------------------------------------------------- /tests/data/parser/parseReplaceErr.in: -------------------------------------------------------------------------------- 1 | REPLACE LOW_PRIORITY 2 | INTO users(id, username) 3 | (1, 'Foo'), (2, 'Bar') -------------------------------------------------------------------------------- /tests/data/parser/parseReplaceErr2.in: -------------------------------------------------------------------------------- 1 | REPLACE SELECT 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseReplaceErr3.in: -------------------------------------------------------------------------------- 1 | REPLACE INTO x "string" 2 | 3 | -------------------------------------------------------------------------------- /tests/data/parser/parseReplaceIntoErr.in: -------------------------------------------------------------------------------- 1 | REPLACE INTO x INSERT 2 | 3 | -------------------------------------------------------------------------------- /tests/data/parser/parseReplaceSelect.in: -------------------------------------------------------------------------------- 1 | REPLACE INTO `a` (`value`) SELECT value from `b` -------------------------------------------------------------------------------- /tests/data/parser/parseReplaceSet.in: -------------------------------------------------------------------------------- 1 | REPLACE INTO `a` (`value`) SET value = '123' -------------------------------------------------------------------------------- /tests/data/parser/parseReplaceValues.in: -------------------------------------------------------------------------------- 1 | REPLACE INTO `a` (`value`) VALUES ('123'), ('123') -------------------------------------------------------------------------------- /tests/data/parser/parseRestore.in: -------------------------------------------------------------------------------- 1 | RESTORE TABLE my_table FROM "/path/to/backup/directory" -------------------------------------------------------------------------------- /tests/data/parser/parseSelect.in: -------------------------------------------------------------------------------- 1 | SELECT ALL MAX_STATEMENT_TIME = 10 2 | 1 + 2 AS result, 3 | @idx, 4 | id, 5 | test.`users`.username AS `name` 6 | FROM 7 | `test`.users, posts 8 | PARTITION (p1, p2) 9 | WHERE 10 | id > 0 11 | ORDER BY 12 | username DESC, 13 | id 14 | LIMIT 3 OFFSET 2; -------------------------------------------------------------------------------- /tests/data/parser/parseSelect10.in: -------------------------------------------------------------------------------- 1 | SELECT my_column FROM my_table WHERE BINARY(my_column) != BINARY(UPPER(my_column)) 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseSelect11.in: -------------------------------------------------------------------------------- 1 | SELECT 1 AND NOT 1 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseSelect12.in: -------------------------------------------------------------------------------- 1 | SELECT NOT 1 AS test -------------------------------------------------------------------------------- /tests/data/parser/parseSelect14.in: -------------------------------------------------------------------------------- 1 | SELECT tbl.id, NOT tbl.id FROM tbl -------------------------------------------------------------------------------- /tests/data/parser/parseSelect15.in: -------------------------------------------------------------------------------- 1 | SELECT `````` FROM ``````; -------------------------------------------------------------------------------- /tests/data/parser/parseSelect16.in: -------------------------------------------------------------------------------- 1 | SELECT 2 | p.aa, 3 | p.bb, 4 | CASE 5 | WHEN p.cc = 'Y' and dd = 'Found' then '99.99999' 6 | WHEN p.cc = '' and dd = 'Found' then '00.00000' 7 | ELSE '99.99999' END as RR, 8 | CASE 9 | WHEN dd = 'Found' then 'Y' 10 | ELSE 'N' END as RRI, 11 | CASE 12 | WHEN (SELECT MAX(cd) from LSA act group by act.an having p.acn = act.an) > '2021-01-28' THEN '06/30/2020' 13 | WHEN p.co < '2021-01-28' THEN '12/31/2019' 14 | ELSE '06/30/2020' END as DAOD 15 | FROM `LTKP` p 16 | left join `LQA` qa 17 | on qa.pi = p.ID 18 | left join LSA act 19 | on p.acn = act.an 20 | where p.a =1 and p.mr = 1 and p.sc<> '23' and qa.qt = 'TEXT' and p.tl = "TEXT" and qa.a = 1 -------------------------------------------------------------------------------- /tests/data/parser/parseSelect2.in: -------------------------------------------------------------------------------- 1 | SELECT (SELECT 'foo') bar, (SELECT 'baz') AS qux, a as b FROM tabl; -------------------------------------------------------------------------------- /tests/data/parser/parseSelect3.in: -------------------------------------------------------------------------------- 1 | SELECT left_tbl.* 2 | FROM left_tbl LEFT JOIN right_tbl ON left_tbl.id = right_tbl.id 3 | WHERE right_tbl.id IS NULL; -------------------------------------------------------------------------------- /tests/data/parser/parseSelect4.in: -------------------------------------------------------------------------------- 1 | SELECT * 2 | FROM test 3 | WHERE RIGHT(name, 2) = 'AB'; 4 | -------------------------------------------------------------------------------- /tests/data/parser/parseSelect5.in: -------------------------------------------------------------------------------- 1 | SELECT c1, c2, c3 2 | /* Subquery in FROM list */ 3 | FROM (SELECT C1, c2, c3 FROM test2) t1 4 | WHERE RIGHT(name, 2) = 'AB'; 5 | -------------------------------------------------------------------------------- /tests/data/parser/parseSelect6.in: -------------------------------------------------------------------------------- 1 | SELECT * FROM t1 LEFT JOIN (t2, t3, t4) 2 | ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c) 3 | -------------------------------------------------------------------------------- /tests/data/parser/parseSelect7.in: -------------------------------------------------------------------------------- 1 | SELECT * FROM t1 LEFT JOIN (t2 CROSS JOIN t3 CROSS JOIN t4) 2 | ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c) -------------------------------------------------------------------------------- /tests/data/parser/parseSelect8.in: -------------------------------------------------------------------------------- 1 | select * FROM (select Pop FROM MyTable) p join tadaa t where p.x=t.y -------------------------------------------------------------------------------- /tests/data/parser/parseSelect9.in: -------------------------------------------------------------------------------- 1 | SELECT casein_pipe, email_cp, name_first_cp, name_last_cp, purpose_pipe 2 | FROM (tbl_comp_person INNER JOIN `tbl_pipelist` ON tbl_comp_person.IDp = tbl_pipelist.IDp) 3 | WHERE casein_pipe > '2016-03-01' AND `campaign_id_pipe` = 24569 AND `weeksonlist_pipe` = 1 4 | ORDER BY `tbl_pipelist`.`casein_pipe` ASC -------------------------------------------------------------------------------- /tests/data/parser/parseSelectAggregateWithPartitionAndAlias.in: -------------------------------------------------------------------------------- 1 | SELECT *, COUNT(*) OVER(PARTITION BY `REGION`) AS "count(REGION)" FROM `world_borders` 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseSelectCase1.in: -------------------------------------------------------------------------------- 1 | select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, 2 | case 1 when 1 then "Some" else "Other" end FROM a; -------------------------------------------------------------------------------- /tests/data/parser/parseSelectCase2.in: -------------------------------------------------------------------------------- 1 | select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, 2 | case /* */ when 1=1 then "Some" else "Other" end FROM a; -------------------------------------------------------------------------------- /tests/data/parser/parseSelectCase3.in: -------------------------------------------------------------------------------- 1 | select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, 2 | case /* */ when 1=1 then "Some" when 2=1 then "Other" end FROM a; -------------------------------------------------------------------------------- /tests/data/parser/parseSelectCase4.in: -------------------------------------------------------------------------------- 1 | select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, 2 | case 1 /* */ when 1 then "Some" when 2 then "Other" end FROM a; -------------------------------------------------------------------------------- /tests/data/parser/parseSelectCase5.in: -------------------------------------------------------------------------------- 1 | select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, 2 | test=case 1 /* */ when 1 then "Some" when 2 then "Other" end FROM a; -------------------------------------------------------------------------------- /tests/data/parser/parseSelectCaseAlias1.in: -------------------------------------------------------------------------------- 1 | select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, 2 | case /* */ when 1=1 then "Some" when 2=1 then "Other" end /* */ AS /* */ foo FROM a; -------------------------------------------------------------------------------- /tests/data/parser/parseSelectCaseAlias2.in: -------------------------------------------------------------------------------- 1 | select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, 2 | case /* */ when 1=1 then "Some" when 2=1 then "Other" end /* */ foo FROM a; -------------------------------------------------------------------------------- /tests/data/parser/parseSelectCaseAlias3.in: -------------------------------------------------------------------------------- 1 | select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, 2 | test=case 1 /* */ when 1 then "Some" when 2 then "Other" end /* */ AS /* */ foo FROM a; -------------------------------------------------------------------------------- /tests/data/parser/parseSelectCaseAlias4.in: -------------------------------------------------------------------------------- 1 | select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, 2 | test=case 1 /* */ when 1 then "Some" when 2 then "Other" end /* */ foo FROM a; -------------------------------------------------------------------------------- /tests/data/parser/parseSelectCaseAlias5.in: -------------------------------------------------------------------------------- 1 | select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, 2 | case 1 when 1 then "Some" else "Other" end AS "string value" FROM a; -------------------------------------------------------------------------------- /tests/data/parser/parseSelectCaseAlias6.in: -------------------------------------------------------------------------------- 1 | select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, 2 | case 1 when 1 then "Some" else "Other" end AS `symbol_value` FROM a; -------------------------------------------------------------------------------- /tests/data/parser/parseSelectCaseAliasErr1.in: -------------------------------------------------------------------------------- 1 | select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, 2 | case 1 when 1 then "Some" else "Other" end AS AS foo FROM a; -------------------------------------------------------------------------------- /tests/data/parser/parseSelectCaseAliasErr2.in: -------------------------------------------------------------------------------- 1 | select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, 2 | case 1 when 1 then "Some" else "Other" end AS FROM a; -------------------------------------------------------------------------------- /tests/data/parser/parseSelectCaseAliasErr3.in: -------------------------------------------------------------------------------- 1 | select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, 2 | case 1 when 1 then "Some" else "Other" end AS foo bar FROM a; -------------------------------------------------------------------------------- /tests/data/parser/parseSelectCaseAliasErr4.in: -------------------------------------------------------------------------------- 1 | SELECT CASE WHEN 2 IS NULL THEN "this is true" ELSE "this is false" END AS ; -------------------------------------------------------------------------------- /tests/data/parser/parseSelectCaseErr1.in: -------------------------------------------------------------------------------- 1 | select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, case 1 then 1 then "Some" else "Other" end FROM a; -------------------------------------------------------------------------------- /tests/data/parser/parseSelectCaseErr2.in: -------------------------------------------------------------------------------- 1 | select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, 2 | case then 1=1 then "Some" else "Other" end FROM a; -------------------------------------------------------------------------------- /tests/data/parser/parseSelectCaseErr3.in: -------------------------------------------------------------------------------- 1 | select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, 2 | case when 1=1 when "Some" else "Other" end FROM a; -------------------------------------------------------------------------------- /tests/data/parser/parseSelectCaseErr4.in: -------------------------------------------------------------------------------- 1 | select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, 2 | case 1 then 1 when "Some" else "Other" end FROM a; -------------------------------------------------------------------------------- /tests/data/parser/parseSelectCaseErr5.in: -------------------------------------------------------------------------------- 1 | select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, 2 | case 1 when 1 then "Some" when 2 when "Other" end FROM a; -------------------------------------------------------------------------------- /tests/data/parser/parseSelectEndOptions1.in: -------------------------------------------------------------------------------- 1 | SELECT pid, name2 FROM tablename WHERE pid = 20 /* FOR UPDATE end_option */ FOR UPDATE -------------------------------------------------------------------------------- /tests/data/parser/parseSelectEndOptions2.in: -------------------------------------------------------------------------------- 1 | SELECT pid, name2 FROM tablename WHERE pid = 20 2 | /* LOCK IN SHARE MODE end_option */ LOCK IN SHARE MODE -------------------------------------------------------------------------------- /tests/data/parser/parseSelectEndOptionsErr.in: -------------------------------------------------------------------------------- 1 | SELECT pid, name2 FROM tablename WHERE pid = 20 2 | /* USE both end_option, gives error */ 3 | FOR UPDATE LOCK IN SHARE MODE -------------------------------------------------------------------------------- /tests/data/parser/parseSelectErr1.in: -------------------------------------------------------------------------------- 1 | SELECT ALL DISTINCT MAX_STATEMENT_TIME = 10 2 | 1 + 2 AS result, 3 | @idx, 4 | id, 5 | test.`users`.username AS 6 | FROM 7 | `test`.users 8 | PARTITION (p1, p2) 9 | WHERE 10 | id > 0 11 | ORDER BY 12 | username DESC, 13 | id 14 | LIMIT 2, 3; -------------------------------------------------------------------------------- /tests/data/parser/parseSelectErr2.in: -------------------------------------------------------------------------------- 1 | select * from foobar where foo = @ 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseSelectExists.in: -------------------------------------------------------------------------------- 1 | SELECT EXISTS(SELECT 1) 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseSelectGroupBy.in: -------------------------------------------------------------------------------- 1 | SELECT * FROM movie GROUP BY title; 2 | SELECT * FROM movie GROUP BY 1; 3 | SELECT * FROM movie GROUP BY year, title; 4 | SELECT * FROM movie GROUP BY year WITH ROLLUP; 5 | SELECT * FROM movie GROUP BY year, title WITH ROLLUP; 6 | SELECT * FROM movie GROUP BY year, title WITH ROLLUP ORDER BY year ASC LIMIT 0, 2; 7 | -------------------------------------------------------------------------------- /tests/data/parser/parseSelectGroupByErr.in: -------------------------------------------------------------------------------- 1 | SELECT * FROM movie GROUP BY title WITH ROLLUP, year WITH ROLLUP; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseSelectGroupByWithComments.in: -------------------------------------------------------------------------------- 1 | SELECT id, title FROM movie GROUP BY movie.id, /* removed_field, */ title; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseSelectIndexHint1.in: -------------------------------------------------------------------------------- 1 | SELECT * FROM address FORCE INDEX (idx_fk_city_id) IGNORE KEY FOR GROUP BY (a, b,c) WHERE city_id<0; -------------------------------------------------------------------------------- /tests/data/parser/parseSelectIndexHint2.in: -------------------------------------------------------------------------------- 1 | SELECT * FROM address USE INDEX (idx_fk_city_id) FORCE KEY FOR GROUP BY (a, b,c) WHERE city_id<0 -------------------------------------------------------------------------------- /tests/data/parser/parseSelectIndexHintErr1.in: -------------------------------------------------------------------------------- 1 | SELECT * FROM address FORCE INT (idx_fk_city_id); -------------------------------------------------------------------------------- /tests/data/parser/parseSelectIndexHintErr2.in: -------------------------------------------------------------------------------- 1 | SELECT * FROM address FORCE abc (idx_fk_city_id); -------------------------------------------------------------------------------- /tests/data/parser/parseSelectIndexHintErr3.in: -------------------------------------------------------------------------------- 1 | SELECT * FROM address FORCE INDEX FOR abc (idx_fk_city_id); -------------------------------------------------------------------------------- /tests/data/parser/parseSelectIndexHintErr4.in: -------------------------------------------------------------------------------- 1 | SELECT * FROM address FORCE INDEX FOR INT (idx_fk_city_id); -------------------------------------------------------------------------------- /tests/data/parser/parseSelectIntoOptions1.in: -------------------------------------------------------------------------------- 1 | SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt' 2 | FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' 3 | LINES TERMINATED BY '\n' 4 | FROM test_table; -------------------------------------------------------------------------------- /tests/data/parser/parseSelectIntoOptions2.in: -------------------------------------------------------------------------------- 1 | SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt' 2 | COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' 3 | LINES TERMINATED BY '\n' 4 | FROM test_table; -------------------------------------------------------------------------------- /tests/data/parser/parseSelectIntoOptions3.in: -------------------------------------------------------------------------------- 1 | SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt' 2 | COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' 3 | FROM test_table; -------------------------------------------------------------------------------- /tests/data/parser/parseSelectJoinCross.in: -------------------------------------------------------------------------------- 1 | SELECT table112.id,table112.bval1,table112.bval2, 2 | table111.id,table111.aval1 3 | FROM table112 4 | CROSS JOIN table111 -------------------------------------------------------------------------------- /tests/data/parser/parseSelectJoinMultiple.in: -------------------------------------------------------------------------------- 1 | SELECT * FROM Orders NATURAL JOIN Items_Orders NATURAL JOIN Items 2 | WHERE customer= 'username' -------------------------------------------------------------------------------- /tests/data/parser/parseSelectJoinMultiple2.in: -------------------------------------------------------------------------------- 1 | SELECT * FROM orders 2 | NATURAL JOIN Items_Orders LEFT JOIN items on orders.item_id = items.id 3 | WHERE customer= 'username' -------------------------------------------------------------------------------- /tests/data/parser/parseSelectJoinNatural.in: -------------------------------------------------------------------------------- 1 | SELECT id,aval1,cval1 2 | FROM table111 3 | NATURAL JOIN table113 -------------------------------------------------------------------------------- /tests/data/parser/parseSelectJoinNaturalLeft.in: -------------------------------------------------------------------------------- 1 | SELECT C.First_Name, C.Last_Name, O.title 2 | FROM Employee as C 3 | NATURAL LEFT JOIN JOb as O; -------------------------------------------------------------------------------- /tests/data/parser/parseSelectJoinNaturalLeftOuter.in: -------------------------------------------------------------------------------- 1 | SELECT * FROM actor NATURAL LEFT OUTER JOIN film_actor; -------------------------------------------------------------------------------- /tests/data/parser/parseSelectJoinNaturalRight.in: -------------------------------------------------------------------------------- 1 | SELECT * FROM actor NATURAL RIGHT JOIN film_actor; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseSelectJoinNaturalRightOuter.in: -------------------------------------------------------------------------------- 1 | SELECT * FROM actor NATURAL RIGHT OUTER JOIN film_actor; -------------------------------------------------------------------------------- /tests/data/parser/parseSelectJoinStraight.in: -------------------------------------------------------------------------------- 1 | SELECT id,aval1,cval1 2 | FROM table111 3 | STRAIGHT_JOIN table113 on table111.a = table113.b -------------------------------------------------------------------------------- /tests/data/parser/parseSelectNested.in: -------------------------------------------------------------------------------- 1 | SELECT (SELECT 'foo') as Bar, (SELECT 'baz') as fOo; -------------------------------------------------------------------------------- /tests/data/parser/parseSelectOrderByComment.in: -------------------------------------------------------------------------------- 1 | SELECT `one space` -- this is the SELECT 2 | FROM `Une table espace` -- this is the FROM 3 | ORDER BY `one space` ASC -- this is the order by -------------------------------------------------------------------------------- /tests/data/parser/parseSelectOrderByIsNull.in: -------------------------------------------------------------------------------- 1 | SELECT * FROM some_table ORDER BY some_col IS NULL; -------------------------------------------------------------------------------- /tests/data/parser/parseSelectOverAlias_mariadb_100600.in: -------------------------------------------------------------------------------- 1 | select `products`.`pid` AS `pid`, `products`.`pname` as `name`, rank() over( partition by `products`.`pvalue` order by `products`.`pid` desc) AS `myrank` from `products` 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseSelectUnion.in: -------------------------------------------------------------------------------- 1 | (SELECT a FROM t WHERE a=1) UNION (SELECT a FROM t WHERE a=2) 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseSelectUnion2.in: -------------------------------------------------------------------------------- 1 | (SELECT DISTINCT `User`, `Host` FROM `mysql`.`user` ) UNION (SELECT DISTINCT `User`, `Host` FROM `mysql`.`db` ) UNION (SELECT DISTINCT `User`, `Host` FROM `mysql`.`tables_priv` ) UNION (SELECT DISTINCT `User`, `Host` FROM `mysql`.`columns_priv` ) UNION (SELECT DISTINCT `User`, `Host` FROM `mysql`.`procs_priv` ) ORDER BY `User` ASC, `Host` ASC -------------------------------------------------------------------------------- /tests/data/parser/parseSelectWhere.in: -------------------------------------------------------------------------------- 1 | SELECT * FROM film WHERE film_id = 10 OR film_id >= 20; 2 | SELECT * FROM film WHERE (film_id < 10) || (film_id > 20); 3 | SELECT * FROM film WHERE `film_id` != 10 AND `film_id` <= 20; 4 | SELECT * FROM film WHERE `film`.`film_id` <> 10 && `film`.`film_id` <= 20; 5 | SELECT * FROM film WHERE film.film_id < 20 XOR film.rating = 'PG-13'; 6 | SELECT * FROM film WHERE /* film_id = */ film_id = 10; 7 | SELECT * FROM film WHERE NOT film_id > 10; 8 | SELECT * FROM film WHERE ! (film_id > 10); 9 | SELECT * FROM film WHERE description IS NULL; 10 | SELECT * FROM film WHERE description IS NOT NULL; 11 | SELECT * FROM film WHERE film_id BETWEEN 10 AND 20; 12 | SELECT * FROM film WHERE film_id NOT BETWEEN 10 AND 20; 13 | SELECT * FROM film WHERE film_id IN (3,5,7); 14 | SELECT * FROM film WHERE rating = UPPER('pg'); 15 | SELECT * FROM film WHERE rating SOUNDS LIKE 'PG'; -------------------------------------------------------------------------------- /tests/data/parser/parseSelectWhereCollate.in: -------------------------------------------------------------------------------- 1 | SELECT 1 FROM my_table WHERE first_col = 'foo' AND second_col COLLATE utf8_bin = 'bar'; -------------------------------------------------------------------------------- /tests/data/parser/parseSelectWithParenthesis.in: -------------------------------------------------------------------------------- 1 | (SELECT first_name FROM `actor` LIMIT 1, 2) -------------------------------------------------------------------------------- /tests/data/parser/parseSelectWrongOrder.in: -------------------------------------------------------------------------------- 1 | SELECT pid, name2 FROM tablename LIMIT 10 WHERE pid = 20 -------------------------------------------------------------------------------- /tests/data/parser/parseSelectWrongOrder2.in: -------------------------------------------------------------------------------- 1 | SELECT DISTINCT * FROM tbl1 INNER JOIN tbl2 ON id1 = id2 WHERE 1=1 LEFT OUTER JOIN l3; -------------------------------------------------------------------------------- /tests/data/parser/parseSetCharacterSet.in: -------------------------------------------------------------------------------- 1 | SET CHARACTER SET 'utf8' -------------------------------------------------------------------------------- /tests/data/parser/parseSetCharacterSetError.in: -------------------------------------------------------------------------------- 1 | SET CHARACTER SET -------------------------------------------------------------------------------- /tests/data/parser/parseSetCharset.in: -------------------------------------------------------------------------------- 1 | SET CHARSET 'utf8' -------------------------------------------------------------------------------- /tests/data/parser/parseSetCharsetError.in: -------------------------------------------------------------------------------- 1 | SET CHARSET -------------------------------------------------------------------------------- /tests/data/parser/parseSetError1.in: -------------------------------------------------------------------------------- 1 | SET CHARSET 'utf8' CHARACTER SET 'utf8' -------------------------------------------------------------------------------- /tests/data/parser/parseSetGlobalVariable.in: -------------------------------------------------------------------------------- 1 | SET GLOBAL max_connections = 1 -------------------------------------------------------------------------------- /tests/data/parser/parseSetNames.in: -------------------------------------------------------------------------------- 1 | SET NAMES 'utf8' -------------------------------------------------------------------------------- /tests/data/parser/parseSetNames2.in: -------------------------------------------------------------------------------- 1 | SET NAMES 'utf8' COLLATE 'utf8_general_ci' -------------------------------------------------------------------------------- /tests/data/parser/parseSetNames3.in: -------------------------------------------------------------------------------- 1 | SET NAMES 'utf8' DEFAULT; -------------------------------------------------------------------------------- /tests/data/parser/parseSetNamesError.in: -------------------------------------------------------------------------------- 1 | SET NAMES -------------------------------------------------------------------------------- /tests/data/parser/parseSetNamesError2.in: -------------------------------------------------------------------------------- 1 | SET NAMES 'utf8' DEFAULT 'utf8_general_ci' -------------------------------------------------------------------------------- /tests/data/parser/parseSetNamesError3.in: -------------------------------------------------------------------------------- 1 | SET NAMES 'utf8' COLLATE -------------------------------------------------------------------------------- /tests/data/parser/parseSetVariable.in: -------------------------------------------------------------------------------- 1 | SET @foo = 1 -------------------------------------------------------------------------------- /tests/data/parser/parseSetVariable2.in: -------------------------------------------------------------------------------- 1 | SET @foo := 1 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseTable1.in: -------------------------------------------------------------------------------- 1 | TABLE `fo` ORDER BY `fo`.`uuid` ASC; -------------------------------------------------------------------------------- /tests/data/parser/parseTransaction.in: -------------------------------------------------------------------------------- 1 | START TRANSACTION; 2 | SELECT @A:=SUM(salary) FROM table1 WHERE type=1; 3 | UPDATE table2 SET summary=@A WHERE type=1; 4 | COMMIT; -------------------------------------------------------------------------------- /tests/data/parser/parseTransaction2.in: -------------------------------------------------------------------------------- 1 | START TRANSACTION; 2 | SELECT @A:=SUM(salary) FROM table1 WHERE type=1; 3 | UPDATE table2 SET summary=@A WHERE type=1; 4 | ROLLBACK; -------------------------------------------------------------------------------- /tests/data/parser/parseTransaction3.in: -------------------------------------------------------------------------------- 1 | begin; 2 | SELECT * FROM `tablename`; 3 | commit; 4 | -------------------------------------------------------------------------------- /tests/data/parser/parseTransaction4.in: -------------------------------------------------------------------------------- 1 | 2 | START TRANSACTION; 3 | SET time_zone = "+00:00"; 4 | -------------------------------------------------------------------------------- /tests/data/parser/parseTransaction5.in: -------------------------------------------------------------------------------- 1 | BEGIN; 2 | INSERT INTO t2 VALUES (3); 3 | SAVEPOINT my_savepoint; 4 | INSERT INTO t2 VALUES (4); 5 | RELEASE SAVEPOINT my_savepoint; 6 | COMMIT; -------------------------------------------------------------------------------- /tests/data/parser/parseTransaction6.in: -------------------------------------------------------------------------------- 1 | BEGIN; 2 | INSERT INTO t2 VALUES (3); 3 | SAVEPOINT my_savepoint; 4 | INSERT INTO t2 VALUES (4); 5 | ROLLBACK WORK TO SAVEPOINT my_savepoint; 6 | COMMIT; -------------------------------------------------------------------------------- /tests/data/parser/parseTransaction7.in: -------------------------------------------------------------------------------- 1 | BEGIN; 2 | INSERT INTO t2 VALUES (3); 3 | SAVEPOINT my_savepoint; 4 | INSERT INTO t2 VALUES (4); 5 | ROLLBACK TO SAVEPOINT my_savepoint; 6 | COMMIT; -------------------------------------------------------------------------------- /tests/data/parser/parseTransactionErr1.in: -------------------------------------------------------------------------------- 1 | COMMIT; -------------------------------------------------------------------------------- /tests/data/parser/parseUnlock1.in: -------------------------------------------------------------------------------- 1 | UNLOCK TABLES; -------------------------------------------------------------------------------- /tests/data/parser/parseUnlockErr1.in: -------------------------------------------------------------------------------- 1 | UNLOCK TABLES abc; -------------------------------------------------------------------------------- /tests/data/parser/parseUpdate1.in: -------------------------------------------------------------------------------- 1 | UPDATE 2 | users 3 | SET 4 | username = "Dan", 5 | id=155; -------------------------------------------------------------------------------- /tests/data/parser/parseUpdate2.in: -------------------------------------------------------------------------------- 1 | UPDATE 2 | users 3 | SET 4 | username = "Dan", 5 | id=155 6 | WHERE 7 | username = "Paul" 8 | LIMIT 1 OFFSET 2; -------------------------------------------------------------------------------- /tests/data/parser/parseUpdate3.in: -------------------------------------------------------------------------------- 1 | UPDATE foo SET bar = WHERE baz = 0 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseUpdate4.in: -------------------------------------------------------------------------------- 1 | UPDATE Country x, City y set x.Name=x.Name where x.Code=y.CountryCode; -------------------------------------------------------------------------------- /tests/data/parser/parseUpdate5.in: -------------------------------------------------------------------------------- 1 | update user u left join user_detail ud on u.id = ud.user_id set ud.ip ='33' where u.id = 1 -------------------------------------------------------------------------------- /tests/data/parser/parseUpdate6.in: -------------------------------------------------------------------------------- 1 | UPDATE customer_table c 2 | 3 | JOIN 4 | employee_table e 5 | ON c.city_id = e.city_id 6 | JOIN 7 | anyother_table a 8 | ON a.someID = e.someID 9 | 10 | SET c.active = "Yes" 11 | WHERE c.city = "New york"; -------------------------------------------------------------------------------- /tests/data/parser/parseUpdate7.in: -------------------------------------------------------------------------------- 1 | UPDATE customer_table c 2 | 3 | INNER JOIN 4 | employee_table e 5 | ON c.city_id = e.city_id 6 | LEFT JOIN 7 | anyother_table a 8 | ON a.someID = e.someID 9 | 10 | SET c.active = "Yes" 11 | WHERE c.city = "New york"; -------------------------------------------------------------------------------- /tests/data/parser/parseUpdateEmptySet.in: -------------------------------------------------------------------------------- 1 | UPDATE test SET WHERE 1; 2 | -------------------------------------------------------------------------------- /tests/data/parser/parseUpdateErr.in: -------------------------------------------------------------------------------- 1 | -- extraneous comma 2 | UPDATE 3 | users 4 | SET 5 | username = "Dan", 6 | id=155, 7 | WHERE 1 = 1; -------------------------------------------------------------------------------- /tests/data/parser/parseWhere0.in: -------------------------------------------------------------------------------- 1 | DELETE FROM t where 0 AND 0 -------------------------------------------------------------------------------- /tests/data/parser/parseWithStatement.in: -------------------------------------------------------------------------------- 1 | INSERT INTO table_name WITH cte (col1) AS ( SELECT 1 UNION ALL SELECT 2 ) SELECT col1 FROM cte -------------------------------------------------------------------------------- /tests/data/parser/parseWithStatement1.in: -------------------------------------------------------------------------------- 1 | CREATE table table_name WITH cte (col1) AS ( SELECT 1 UNION ALL SELECT 2 ) SELECT col1 FROM cte -------------------------------------------------------------------------------- /tests/data/parser/parseWithStatement2.in: -------------------------------------------------------------------------------- 1 | INSERT INTO table_name WITH cte (col1) AS ( SELECT 1 ) SELECT col1 FROM cte ON DUPLICATE KEY UPDATE col_name = 3 -------------------------------------------------------------------------------- /tests/data/parser/parseWithStatement3.in: -------------------------------------------------------------------------------- 1 | WITH categories(identifier, name, parent_id) AS ( SELECT c.identifier, c.name, c.parent_id FROM category c WHERE c.identifier = 'a' UNION ALL SELECT c.identifier, c.name, c.parent_id FROM categories, category c WHERE c.identifier = categories.parent_id ), foo AS ( SELECT * FROM test ) SELECT * FROM categories -------------------------------------------------------------------------------- /tests/data/parser/parseWithStatement4.in: -------------------------------------------------------------------------------- 1 | CREATE table table_name AS WITH cte (col1) AS ( SELECT 1 UNION ALL SELECT 2 ) NO -------------------------------------------------------------------------------- /tests/data/parser/parseWithStatement5.in: -------------------------------------------------------------------------------- 1 | CREATE view view_name AS WITH aa(col1) AS ( SELECT 1 UNION ALL SELECT 2 ) SELECT col1 FROM cte -------------------------------------------------------------------------------- /tests/data/parser/parseWithStatement6.in: -------------------------------------------------------------------------------- 1 | CREATE view view_name WITH aa(col1) AS ( SELECT 1 UNION ALL SELECT 2 ) SELECT col1 FROM cte -------------------------------------------------------------------------------- /tests/data/parser/parseWithStatement7.in: -------------------------------------------------------------------------------- 1 | WITH cte (col1) AS ( SELECT 1 UNION ALL SELECT 2 ) SELECT * FROM cte INNER JOIN table2 ON table2.col1=cte.col1; -------------------------------------------------------------------------------- /tests/data/parser/parseWithStatementErr.in: -------------------------------------------------------------------------------- 1 | INSERT INTO table_name WITH cte col1) AS ( SELECT 1 UNION ALL SELECT 2 ) SELECT col1 FROM cte -------------------------------------------------------------------------------- /tests/data/parser/parseWithStatementErr1.in: -------------------------------------------------------------------------------- 1 | CREATE table table_name WITH cte (col1) ( SELECT 1 UNION ALL SELECT 2 ) SELECT col1 FROM cte -------------------------------------------------------------------------------- /tests/data/parser/parseWithStatementErr2.in: -------------------------------------------------------------------------------- 1 | WITH cte (col1) AS ( SELECT 1 UNION ALL SELECT 2 ) -------------------------------------------------------------------------------- /tests/data/parser/parseWithStatementErr3.in: -------------------------------------------------------------------------------- 1 | CREATE table table_name WITH cte (col1) AS ( SELECT 1 UNION ALL SELECT 2 ), -------------------------------------------------------------------------------- /tests/data/parser/parseWithStatementErr4.in: -------------------------------------------------------------------------------- 1 | CREATE table table_name WITH cte (col1) AS ( SELECT 1 UNION ALL SELECT 2 ) NO -------------------------------------------------------------------------------- /tests/data/parser/parseWithStatementErr5.in: -------------------------------------------------------------------------------- 1 | CREATE table table_name WITH (col1) AS ( SELECT 1 UNION ALL SELECT 2 ) NO -------------------------------------------------------------------------------- /tests/data/parser/parseWithStatementErr6.in: -------------------------------------------------------------------------------- 1 | INSERT INTO table_name WITH cte (col1) AS ( INSERT INTO table_name (column1, column2, column3) VALUES (value1, value2, value3) ) SELECT col1 FROM cte ON DUPLICATE KEY UPDATE col_name = 3 -------------------------------------------------------------------------------- /tests/data/parser/parseWithStatementErr7.in: -------------------------------------------------------------------------------- 1 | WITH cte (col1) AS ( SELECT 1 UNN ALL SELECT 2 ) SELECT col1 FROM cte -------------------------------------------------------------------------------- /tests/data/parser/parseWithStatementErr8.in: -------------------------------------------------------------------------------- 1 | WITH cte (col1) AS ( SELECT 1 UNION ALL SELECT 2 ) SELECT col1 FR cte --------------------------------------------------------------------------------