Improved documentation.
Updated sql-parser library to udan11/sql-parser@0bff48a. Signed-off-by: Dan Ungureanu <udan1107@gmail.com>
This commit is contained in:
parent
51876a097c
commit
fc6212b922
@ -4233,7 +4233,7 @@ class PMA_DisplayResults
|
||||
|
||||
/**
|
||||
* The statement this table is built for.
|
||||
* @var SelectStatement
|
||||
* @var SqlParser\Statements\SelectStatement
|
||||
*/
|
||||
$statement = $analyzed_sql_results['statement'];
|
||||
|
||||
|
||||
@ -754,7 +754,7 @@ class PMA_Table
|
||||
|
||||
/**
|
||||
* The full name of source table, quoted.
|
||||
* @var string
|
||||
* @var string $source
|
||||
*/
|
||||
$source = PMA_Util::backquote($source_db)
|
||||
. '.' . PMA_Util::backquote($source_table);
|
||||
@ -771,7 +771,7 @@ class PMA_Table
|
||||
|
||||
/**
|
||||
* The full name of target table, quoted.
|
||||
* @var string
|
||||
* @var string $target
|
||||
*/
|
||||
$target = PMA_Util::backquote($target_db)
|
||||
. '.' . PMA_Util::backquote($target_table);
|
||||
@ -805,7 +805,7 @@ class PMA_Table
|
||||
|
||||
/**
|
||||
* The old structure of the table..
|
||||
* @var string
|
||||
* @var string $sql_structure
|
||||
*/
|
||||
$sql_structure = $export_sql_plugin->getTableDef(
|
||||
$source_db, $source_table, "\n", $err_url, false, false
|
||||
@ -846,7 +846,7 @@ class PMA_Table
|
||||
|
||||
/**
|
||||
* Drop statement used for building the query.
|
||||
* @var SqlParser\Statements\DropStatement
|
||||
* @var SqlParser\Statements\DropStatement $statement
|
||||
*/
|
||||
$statement = new SqlParser\Statements\DropStatement();
|
||||
|
||||
@ -877,13 +877,13 @@ class PMA_Table
|
||||
|
||||
/**
|
||||
* The parser responsible for parsing the old queries.
|
||||
* @var SqlParser\Parser
|
||||
* @var SqlParser\Parser $parser
|
||||
*/
|
||||
$parser = new SqlParser\Parser($sql_structure);
|
||||
|
||||
/**
|
||||
* The CREATE statement of this structure.
|
||||
* @var SqlParser\Statements\CreateStatement
|
||||
* @var SqlParser\Statements\CreateStatement $statement
|
||||
*/
|
||||
$statement = $parser->statements[0];
|
||||
|
||||
@ -909,7 +909,7 @@ class PMA_Table
|
||||
|
||||
/**
|
||||
* The ALTER statement that generates the constraints.
|
||||
* @var SqlParser\Statements\AlterStatement
|
||||
* @var SqlParser\Statements\AlterStatement $statement
|
||||
*/
|
||||
$statement = $parser->statements[0];
|
||||
|
||||
@ -947,7 +947,7 @@ class PMA_Table
|
||||
|
||||
/**
|
||||
* The ALTER statement that generates the indexes.
|
||||
* @var SqlParser\Statements\AlterStatement
|
||||
* @var SqlParser\Statements\AlterStatement $statement
|
||||
*/
|
||||
$statement = $parser->statements[0];
|
||||
|
||||
@ -985,7 +985,7 @@ class PMA_Table
|
||||
|
||||
/**
|
||||
* The ALTER statement that alters the AUTO_INCREMENT value.
|
||||
* @var SqlParser\Statements\AlterStatement
|
||||
* @var SqlParser\Statements\AlterStatement $statement
|
||||
*/
|
||||
$statement = $parser->statements[0];
|
||||
|
||||
|
||||
@ -2544,7 +2544,7 @@ class ExportSql extends ExportPlugin
|
||||
|
||||
/**
|
||||
* The parser of this query.
|
||||
* @var SqlParser\Parser
|
||||
* @var SqlParser\Parser $parser
|
||||
*/
|
||||
$parser = new SqlParser\Parser($sql_query);
|
||||
|
||||
@ -2554,19 +2554,19 @@ class ExportSql extends ExportPlugin
|
||||
|
||||
/**
|
||||
* The statement that represents the query.
|
||||
* @var SqlParser\Statements\CreateStatement
|
||||
* @var SqlParser\Statements\CreateStatement $statement
|
||||
*/
|
||||
$statement = $parser->statements[0];
|
||||
|
||||
/**
|
||||
* Old database name.
|
||||
* @var string
|
||||
* @var string $old_database
|
||||
*/
|
||||
$old_database = $db;
|
||||
|
||||
/**
|
||||
* Old table name.
|
||||
* @var string
|
||||
* @var string $old_table
|
||||
*/
|
||||
$old_table = $table;
|
||||
|
||||
@ -2672,7 +2672,7 @@ class ExportSql extends ExportPlugin
|
||||
|
||||
/**
|
||||
* Token parsed at this moment.
|
||||
* @var Token
|
||||
* @var Token $token
|
||||
*/
|
||||
$token = $statement->body[$i];
|
||||
|
||||
|
||||
@ -84,7 +84,7 @@ abstract class Context
|
||||
*/
|
||||
public static $OPERATORS = array(
|
||||
|
||||
// Some operators (*, =) may have ambigous flags, because they depend on
|
||||
// Some operators (*, =) may have ambiguous flags, because they depend on
|
||||
// the context they are being used in.
|
||||
// For example: 1. SELECT * FROM table; # SQL specific (wildcard)
|
||||
// SELECT 2 * 3; # arithmetic
|
||||
@ -385,7 +385,7 @@ abstract class Context
|
||||
// Delimiter.
|
||||
|
||||
/**
|
||||
* Checks if the given character can be a separator for two lexems.
|
||||
* Checks if the given character can be a separator for two lexeme.
|
||||
*
|
||||
* @param string $str String to be checked.
|
||||
*
|
||||
@ -404,6 +404,8 @@ abstract class Context
|
||||
* @param string $context Name of the context or full class name that
|
||||
* defines the context.
|
||||
*
|
||||
* @throws \Exception If the specified context doesn't exist.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function load($context = '')
|
||||
@ -416,7 +418,7 @@ abstract class Context
|
||||
$context = self::$contextPrefix . $context;
|
||||
}
|
||||
if (!class_exists($context)) {
|
||||
throw new \Exception('Specified context ("' . $context . '") doesn\'t exist.');
|
||||
throw new \Exception('Specified context ("' . $context . '") does not exist.');
|
||||
}
|
||||
self::$loadedContext = $context;
|
||||
self::$KEYWORDS = $context::$KEYWORDS;
|
||||
@ -463,5 +465,5 @@ abstract class Context
|
||||
}
|
||||
}
|
||||
|
||||
// Initializng the default context.
|
||||
// Initialing the default context.
|
||||
Context::load();
|
||||
|
||||
@ -8,8 +8,6 @@
|
||||
*/
|
||||
namespace SqlParser\Exceptions;
|
||||
|
||||
use SqlParser\Token;
|
||||
|
||||
/**
|
||||
* Exception thrown by the lexer.
|
||||
*
|
||||
|
||||
@ -108,7 +108,7 @@ class AlterFragment extends Fragment
|
||||
|
||||
/**
|
||||
* Counts brackets.
|
||||
* @var int
|
||||
* @var int $brackets
|
||||
*/
|
||||
$brackets = 0;
|
||||
|
||||
@ -130,7 +130,7 @@ class AlterFragment extends Fragment
|
||||
for (; $list->idx < $list->count; ++$list->idx) {
|
||||
/**
|
||||
* Token parsed at this moment.
|
||||
* @var Token
|
||||
* @var Token $token
|
||||
*/
|
||||
$token = $list->tokens[$list->idx];
|
||||
|
||||
|
||||
@ -81,7 +81,7 @@ class ArrayFragment extends Fragment
|
||||
for (; $list->idx < $list->count; ++$list->idx) {
|
||||
/**
|
||||
* Token parsed at this moment.
|
||||
* @var Token
|
||||
* @var Token $token
|
||||
*/
|
||||
$token = $list->tokens[$list->idx];
|
||||
|
||||
|
||||
@ -82,7 +82,7 @@ class CallKeyword extends Fragment
|
||||
for (; $list->idx < $list->count; ++$list->idx) {
|
||||
/**
|
||||
* Token parsed at this moment.
|
||||
* @var Token
|
||||
* @var Token $token
|
||||
*/
|
||||
$token = $list->tokens[$list->idx];
|
||||
|
||||
|
||||
@ -8,7 +8,6 @@
|
||||
*/
|
||||
namespace SqlParser\Fragments;
|
||||
|
||||
use SqlParser\Context;
|
||||
use SqlParser\Fragment;
|
||||
use SqlParser\Parser;
|
||||
use SqlParser\Token;
|
||||
@ -53,7 +52,7 @@ class DataTypeFragment extends Fragment
|
||||
* Some data types have no parameters.
|
||||
* Numeric types might have parameters for the maximum number of digits,
|
||||
* precision, etc.
|
||||
* String ypes might have parameters for the maxium length stored.
|
||||
* String types might have parameters for the maximum length stored.
|
||||
* `ENUM` and `SET` have parameters for possible values.
|
||||
*
|
||||
* For more information, check the MySQL manual.
|
||||
@ -89,7 +88,7 @@ class DataTypeFragment extends Fragment
|
||||
* @param TokensList $list The list of tokens that are being parsed.
|
||||
* @param array $options Parameters for parsing.
|
||||
*
|
||||
* @return DataTypeFragment[]
|
||||
* @return DataTypeFragment
|
||||
*/
|
||||
public static function parse(Parser $parser, TokensList $list, array $options = array())
|
||||
{
|
||||
@ -111,7 +110,7 @@ class DataTypeFragment extends Fragment
|
||||
for (; $list->idx < $list->count; ++$list->idx) {
|
||||
/**
|
||||
* Token parsed at this moment.
|
||||
* @var Token
|
||||
* @var Token $token
|
||||
*/
|
||||
$token = $list->tokens[$list->idx];
|
||||
|
||||
|
||||
@ -154,7 +154,7 @@ class FieldDefFragment extends Fragment
|
||||
for (; $list->idx < $list->count; ++$list->idx) {
|
||||
/**
|
||||
* Token parsed at this moment.
|
||||
* @var Token
|
||||
* @var Token $token
|
||||
*/
|
||||
$token = $list->tokens[$list->idx];
|
||||
|
||||
|
||||
@ -120,25 +120,25 @@ class FieldFragment extends Fragment
|
||||
|
||||
/**
|
||||
* Whether current tokens make an expression or a table reference.
|
||||
* @var bool
|
||||
* @var bool $isExpr
|
||||
*/
|
||||
$isExpr = false;
|
||||
|
||||
/**
|
||||
* Whether a period was previously found.
|
||||
* @var bool
|
||||
* @var bool $period
|
||||
*/
|
||||
$period = false;
|
||||
|
||||
/**
|
||||
* Whether an alias is expected. Is 2 if `AS` keyword was found.
|
||||
* @var int
|
||||
* @var int $alias
|
||||
*/
|
||||
$alias = 0;
|
||||
|
||||
/**
|
||||
* Counts brackets.
|
||||
* @var int
|
||||
* @var int $brackets
|
||||
*/
|
||||
$brackets = 0;
|
||||
|
||||
@ -148,14 +148,14 @@ class FieldFragment extends Fragment
|
||||
* string, if function was previously found;
|
||||
* true, if open bracket was previously found;
|
||||
* null, in any other case.
|
||||
* @var string|bool
|
||||
* @var string|bool $prev
|
||||
*/
|
||||
$prev = null;
|
||||
|
||||
for (; $list->idx < $list->count; ++$list->idx) {
|
||||
/**
|
||||
* Token parsed at this moment.
|
||||
* @var Token
|
||||
* @var Token $token
|
||||
*/
|
||||
$token = $list->tokens[$list->idx];
|
||||
|
||||
|
||||
@ -41,7 +41,7 @@ class FieldListFragment extends Fragment
|
||||
for (; $list->idx < $list->count; ++$list->idx) {
|
||||
/**
|
||||
* Token parsed at this moment.
|
||||
* @var Token
|
||||
* @var Token $token
|
||||
*/
|
||||
$token = $list->tokens[$list->idx];
|
||||
|
||||
|
||||
@ -76,7 +76,7 @@ class IntoKeyword extends Fragment
|
||||
for (; $list->idx < $list->count; ++$list->idx) {
|
||||
/**
|
||||
* Token parsed at this moment.
|
||||
* @var Token
|
||||
* @var Token $token
|
||||
*/
|
||||
$token = $list->tokens[$list->idx];
|
||||
|
||||
|
||||
@ -68,7 +68,7 @@ class JoinKeyword extends Fragment
|
||||
for (; $list->idx < $list->count; ++$list->idx) {
|
||||
/**
|
||||
* Token parsed at this moment.
|
||||
* @var Token
|
||||
* @var Token $token
|
||||
*/
|
||||
$token = $list->tokens[$list->idx];
|
||||
|
||||
|
||||
@ -114,7 +114,7 @@ class KeyFragment extends Fragment
|
||||
for (; $list->idx < $list->count; ++$list->idx) {
|
||||
/**
|
||||
* Token parsed at this moment.
|
||||
* @var Token
|
||||
* @var Token $token
|
||||
*/
|
||||
$token = $list->tokens[$list->idx];
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* `lIMIT` keyword parser.
|
||||
* `LIMIT` keyword parser.
|
||||
*
|
||||
* @package SqlParser
|
||||
* @subpackage Fragments
|
||||
@ -14,7 +14,7 @@ use SqlParser\Token;
|
||||
use SqlParser\TokensList;
|
||||
|
||||
/**
|
||||
* `lIMIT` keyword parser.
|
||||
* `LIMIT` keyword parser.
|
||||
*
|
||||
* @category Keywords
|
||||
* @package SqlParser
|
||||
@ -67,7 +67,7 @@ class LimitKeyword extends Fragment
|
||||
for (; $list->idx < $list->count; ++$list->idx) {
|
||||
/**
|
||||
* Token parsed at this moment.
|
||||
* @var Token
|
||||
* @var Token $token
|
||||
*/
|
||||
$token = $list->tokens[$list->idx];
|
||||
|
||||
|
||||
@ -56,13 +56,13 @@ class OptionsFragment extends Fragment
|
||||
|
||||
/**
|
||||
* The ID that will be assigned to duplicate options.
|
||||
* @var int
|
||||
* @var int $lastAssignedId
|
||||
*/
|
||||
$lastAssignedId = count($options) + 1;
|
||||
|
||||
/**
|
||||
* The option that was processed last time.
|
||||
* @var array
|
||||
* @var array $lastOption
|
||||
*/
|
||||
$lastOption = null;
|
||||
$lastOptionId = 0;
|
||||
@ -72,7 +72,7 @@ class OptionsFragment extends Fragment
|
||||
for (; $list->idx < $list->count; ++$list->idx) {
|
||||
/**
|
||||
* Token parsed at this moment.
|
||||
* @var Token
|
||||
* @var Token $token
|
||||
*/
|
||||
$token = $list->tokens[$list->idx];
|
||||
|
||||
@ -95,7 +95,7 @@ class OptionsFragment extends Fragment
|
||||
// For example, in `SELECT` statements the keywords `ALL` and `DISTINCT`
|
||||
// conflict and if used together, they produce an invalid query.
|
||||
// Usually, tokens can be identified in the array by the option ID,
|
||||
// but if conflicts occur, a psuedo option ID is used.
|
||||
// but if conflicts occur, a generated option ID is used.
|
||||
// The first pseudo duplicate ID is the maximum value of the real
|
||||
// options (e.g. if there are 5 options, the first fake ID is 6).
|
||||
if (isset($ret->options[$lastOptionId])) {
|
||||
|
||||
@ -69,7 +69,7 @@ class OrderKeyword extends Fragment
|
||||
for (; $list->idx < $list->count; ++$list->idx) {
|
||||
/**
|
||||
* Token parsed at this moment.
|
||||
* @var Token
|
||||
* @var Token $token
|
||||
*/
|
||||
$token = $list->tokens[$list->idx];
|
||||
|
||||
|
||||
@ -82,7 +82,7 @@ class ParamDefFragment extends Fragment
|
||||
for (; $list->idx < $list->count; ++$list->idx) {
|
||||
/**
|
||||
* Token parsed at this moment.
|
||||
* @var Token
|
||||
* @var Token $token
|
||||
*/
|
||||
$token = $list->tokens[$list->idx];
|
||||
|
||||
|
||||
@ -101,7 +101,7 @@ class ReferencesKeyword extends Fragment
|
||||
for (; $list->idx < $list->count; ++$list->idx) {
|
||||
/**
|
||||
* Token parsed at this moment.
|
||||
* @var Token
|
||||
* @var Token $token
|
||||
*/
|
||||
$token = $list->tokens[$list->idx];
|
||||
|
||||
|
||||
@ -73,7 +73,7 @@ class RenameKeyword extends Fragment
|
||||
for (; $list->idx < $list->count; ++$list->idx) {
|
||||
/**
|
||||
* Token parsed at this moment.
|
||||
* @var Token
|
||||
* @var Token $token
|
||||
*/
|
||||
$token = $list->tokens[$list->idx];
|
||||
|
||||
|
||||
@ -69,7 +69,7 @@ class SetKeyword extends Fragment
|
||||
for (; $list->idx < $list->count; ++$list->idx) {
|
||||
/**
|
||||
* Token parsed at this moment.
|
||||
* @var Token
|
||||
* @var Token $token
|
||||
*/
|
||||
$token = $list->tokens[$list->idx];
|
||||
|
||||
|
||||
@ -67,7 +67,7 @@ class ValuesKeyword extends Fragment
|
||||
for (; $list->idx < $list->count; ++$list->idx) {
|
||||
/**
|
||||
* Token parsed at this moment.
|
||||
* @var Token
|
||||
* @var Token $token
|
||||
*/
|
||||
$token = $list->tokens[$list->idx];
|
||||
|
||||
|
||||
@ -33,7 +33,7 @@ class WhereKeyword extends Fragment
|
||||
public static $DELIMITERS = array('&&', 'AND', 'OR', 'XOR', '||');
|
||||
|
||||
/**
|
||||
* Hashmap containing reserved keywords that are also operators.
|
||||
* Hash map containing reserved keywords that are also operators.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
@ -87,7 +87,7 @@ class WhereKeyword extends Fragment
|
||||
|
||||
/**
|
||||
* Counts brackets.
|
||||
* @var int
|
||||
* @var int $brackets
|
||||
*/
|
||||
$brackets = 0;
|
||||
|
||||
@ -104,7 +104,7 @@ class WhereKeyword extends Fragment
|
||||
|
||||
/**
|
||||
* Token parsed at this moment.
|
||||
* @var Token
|
||||
* @var Token $token
|
||||
*/
|
||||
$token = $list->tokens[$list->idx];
|
||||
|
||||
|
||||
@ -36,7 +36,7 @@ class Lexer
|
||||
public static $PARSER_METHODS = array(
|
||||
|
||||
// It is best to put the parsers in order of their complexity
|
||||
// (ascending) and their occurance rate (descending).
|
||||
// (ascending) and their occurrence rate (descending).
|
||||
//
|
||||
// Conflicts:
|
||||
//
|
||||
@ -112,7 +112,7 @@ class Lexer
|
||||
/**
|
||||
* The length of the delimiter.
|
||||
*
|
||||
* Because `parseDelimter` can be called a lot, it would perform a lot of
|
||||
* Because `parseDelimiter` can be called a lot, it would perform a lot of
|
||||
* calls to `strlen`, which might affect performance when the delimiter is
|
||||
* big.
|
||||
*
|
||||
@ -121,11 +121,11 @@ class Lexer
|
||||
public $delimiterLen = 1;
|
||||
|
||||
/**
|
||||
* List of errors that occured during lexing.
|
||||
* List of errors that occurred during lexing.
|
||||
*
|
||||
* Usually, the lexing does not stop once an error occured because that
|
||||
* error might be misdetected or a partial result (even a bad one) might be
|
||||
* needed.
|
||||
* Usually, the lexing does not stop once an error occurred because that
|
||||
* error might be false positive or a partial result (even a bad one)
|
||||
* might be needed.
|
||||
*
|
||||
* @var LexerException[]
|
||||
*
|
||||
@ -149,7 +149,7 @@ class Lexer
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses the string and extracts lexems.
|
||||
* Parses the string and extracts lexemes.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
@ -165,12 +165,17 @@ class Lexer
|
||||
// Another example is `parseComment`.
|
||||
|
||||
$list = new TokensList();
|
||||
|
||||
/**
|
||||
* Last processed token.
|
||||
* @var Token $lastToken
|
||||
*/
|
||||
$lastToken = null;
|
||||
|
||||
for ($this->last = 0, $lastIdx = 0; $this->last < $this->len; $lastIdx = ++$this->last) {
|
||||
/**
|
||||
* The new token.
|
||||
* @var Token
|
||||
* @var Token $token
|
||||
*/
|
||||
$token = null;
|
||||
|
||||
@ -243,7 +248,7 @@ class Lexer
|
||||
$lastToken = $token;
|
||||
}
|
||||
|
||||
// Adding a final delimite at the end to mark the ending.
|
||||
// Adding a final delimiter to mark the ending.
|
||||
$list->tokens[$list->count++] = new Token(null, Token::TYPE_DELIMITER);
|
||||
|
||||
// Saving the tokens list.
|
||||
@ -258,6 +263,8 @@ class Lexer
|
||||
* @param int $pos The position of the character.
|
||||
* @param int $code The code of the error.
|
||||
*
|
||||
* @throws LexerException Throws the exception, if strict mode is enabled.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function error($msg = '', $str = '', $pos = 0, $code = 0)
|
||||
@ -280,19 +287,19 @@ class Lexer
|
||||
|
||||
/**
|
||||
* Value to be returned.
|
||||
* @var Token
|
||||
* @var Token $ret
|
||||
*/
|
||||
$ret = null;
|
||||
|
||||
/**
|
||||
* The value of `$this->last` where `$token` ends in `$this->str`.
|
||||
* @var int
|
||||
* @var int $iEnd
|
||||
*/
|
||||
$iEnd = $this->last;
|
||||
|
||||
/**
|
||||
* Whether last parsed character is a whitespace.
|
||||
* @var bool
|
||||
* @var bool $lastSpace
|
||||
*/
|
||||
$lastSpace = false;
|
||||
|
||||
@ -336,13 +343,13 @@ class Lexer
|
||||
|
||||
/**
|
||||
* Value to be returned.
|
||||
* @var Token|bool
|
||||
* @var Token $ret
|
||||
*/
|
||||
$ret = null;
|
||||
|
||||
/**
|
||||
* The value of `$this->last` where `$token` ends in `$this->str`.
|
||||
* @var int
|
||||
* @var int $iEnd
|
||||
*/
|
||||
$iEnd = $this->last;
|
||||
|
||||
|
||||
@ -227,11 +227,11 @@ class Parser
|
||||
public $strict = false;
|
||||
|
||||
/**
|
||||
* List of errors that occured during parsing.
|
||||
* List of errors that occurred during parsing.
|
||||
*
|
||||
* Usually, the parsing does not stop once an error occured because that
|
||||
* error might be misdetected or a partial result (even a bad one) might be
|
||||
* needed.
|
||||
* Usually, the parsing does not stop once an error occurred because that
|
||||
* error might be a false positive or a partial result (even a bad one)
|
||||
* might be needed.
|
||||
*
|
||||
* @var ParserException[]
|
||||
*
|
||||
@ -278,25 +278,25 @@ class Parser
|
||||
|
||||
/**
|
||||
* Last parsed statement.
|
||||
* @var Statement
|
||||
* @var Statement $lastStatement
|
||||
*/
|
||||
$lastStatement = null;
|
||||
|
||||
/**
|
||||
* Whether a union is parsed or not.
|
||||
* @var bool
|
||||
* @var bool $inUnion
|
||||
*/
|
||||
$inUnion = true;
|
||||
|
||||
/**
|
||||
* The index of the last token from the last statement.
|
||||
* @var int
|
||||
* @var int $prevLastIdx
|
||||
*/
|
||||
$prevLastIdx = -1;
|
||||
|
||||
/**
|
||||
* The list of tokens.
|
||||
* @var TokensList
|
||||
* @var TokensList $list
|
||||
*/
|
||||
$list = &$this->list;
|
||||
|
||||
@ -304,7 +304,7 @@ class Parser
|
||||
|
||||
/**
|
||||
* Token parsed at this moment.
|
||||
* @var Token
|
||||
* @var Token $token
|
||||
*/
|
||||
$token = $list->tokens[$list->idx];
|
||||
|
||||
@ -334,13 +334,13 @@ class Parser
|
||||
|
||||
/**
|
||||
* The name of the class that is used for parsing.
|
||||
* @var string
|
||||
* @var string $class
|
||||
*/
|
||||
$class = static::$STATEMENT_PARSERS[$token->value];
|
||||
|
||||
/**
|
||||
* Processed statement.
|
||||
* @var Statement
|
||||
* @var Statement $stmt
|
||||
*/
|
||||
$stmt = new $class($this, $this->list);
|
||||
|
||||
@ -377,6 +377,8 @@ class Parser
|
||||
* @param Token $token The token that produced the error.
|
||||
* @param int $code The code of the error.
|
||||
*
|
||||
* @throws ParserException Throws the exception, if strict mode is enabled.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function error($msg = '', Token $token = null, $code = 0)
|
||||
|
||||
@ -10,9 +10,6 @@
|
||||
*/
|
||||
namespace SqlParser;
|
||||
|
||||
use SqlParser\Parser;
|
||||
use SqlParser\Statement;
|
||||
use SqlParser\Token;
|
||||
use SqlParser\Fragments\OptionsFragment;
|
||||
|
||||
/**
|
||||
@ -85,7 +82,7 @@ abstract class Statement
|
||||
{
|
||||
/**
|
||||
* Query to be returned.
|
||||
* @var string
|
||||
* @var string $query
|
||||
*/
|
||||
$query = '';
|
||||
|
||||
@ -93,14 +90,14 @@ abstract class Statement
|
||||
|
||||
/**
|
||||
* The name of the clause.
|
||||
* @var string
|
||||
* @var string $name
|
||||
*/
|
||||
$name = $clause[0];
|
||||
|
||||
/**
|
||||
* The type of the clause.
|
||||
* @see self::$CLAUSES
|
||||
* @var int
|
||||
* @var int $type
|
||||
*/
|
||||
$type = $clause[1];
|
||||
|
||||
@ -111,14 +108,14 @@ abstract class Statement
|
||||
|
||||
/**
|
||||
* The builder (parser) of this clause.
|
||||
* @var string
|
||||
* @var string $class
|
||||
*/
|
||||
$class = Parser::$KEYWORD_PARSERS[$name]['class'];
|
||||
|
||||
/**
|
||||
* The name of the field that is used as source for the builder.
|
||||
* Same field is used to store the result of parsing.
|
||||
* @var string
|
||||
* @var string $field
|
||||
*/
|
||||
$field = Parser::$KEYWORD_PARSERS[$name]['field'];
|
||||
|
||||
@ -158,14 +155,14 @@ abstract class Statement
|
||||
* Whether options were parsed or not.
|
||||
* For statements that do not have any options this is set to `true` by
|
||||
* default.
|
||||
* @var bool
|
||||
* @var bool $parsedOptions
|
||||
*/
|
||||
$parsedOptions = isset(static::$OPTIONS) ? false : true;
|
||||
|
||||
for (; $list->idx < $list->count; ++$list->idx) {
|
||||
/**
|
||||
* Token parsed at this moment.
|
||||
* @var Token
|
||||
* @var Token $token
|
||||
*/
|
||||
$token = $list->tokens[$list->idx];
|
||||
|
||||
@ -188,19 +185,19 @@ abstract class Statement
|
||||
|
||||
/**
|
||||
* The name of the class that is used for parsing.
|
||||
* @var string
|
||||
* @var string $class
|
||||
*/
|
||||
$class = null;
|
||||
|
||||
/**
|
||||
* The name of the field where the result of the parsing is stored.
|
||||
* @var string
|
||||
* @var string $field
|
||||
*/
|
||||
$field = null;
|
||||
|
||||
/**
|
||||
* Parser's options.
|
||||
* @var array
|
||||
* @var array $options
|
||||
*/
|
||||
$options = array();
|
||||
|
||||
@ -223,7 +220,7 @@ abstract class Statement
|
||||
$parsedOptions = true;
|
||||
}
|
||||
} elseif ($class === null) {
|
||||
// There is no parser for this keyword and isn't the beggining
|
||||
// There is no parser for this keyword and isn't the beginning
|
||||
// of a statement (so no options) either.
|
||||
$parser->error(
|
||||
'Unrecognized keyword "' . $token->value . '".',
|
||||
|
||||
@ -96,7 +96,7 @@ class AlterStatement extends Statement
|
||||
for (; $list->idx < $list->count; ++$list->idx) {
|
||||
/**
|
||||
* Token parsed at this moment.
|
||||
* @var Token
|
||||
* @var Token $token
|
||||
*/
|
||||
$token = $list->tokens[$list->idx];
|
||||
|
||||
|
||||
@ -9,6 +9,7 @@
|
||||
namespace SqlParser\Statements;
|
||||
|
||||
use SqlParser\Statement;
|
||||
use SqlParser\Fragments\FieldFragment;
|
||||
|
||||
/**
|
||||
* `ANALYZE` statement.
|
||||
|
||||
@ -8,8 +8,6 @@
|
||||
*/
|
||||
namespace SqlParser\Statements;
|
||||
|
||||
use SqlParser\Statements\MaintenanceStatement;
|
||||
|
||||
/**
|
||||
* `BACKUP` statement.
|
||||
*
|
||||
|
||||
@ -9,6 +9,7 @@
|
||||
namespace SqlParser\Statements;
|
||||
|
||||
use SqlParser\Statement;
|
||||
use SqlParser\Fragments\CallKeyword;
|
||||
|
||||
/**
|
||||
* `CALL` statement.
|
||||
|
||||
@ -8,8 +8,6 @@
|
||||
*/
|
||||
namespace SqlParser\Statements;
|
||||
|
||||
use SqlParser\Statements\MaintenanceStatement;
|
||||
|
||||
/**
|
||||
* `CHECK` statement.
|
||||
*
|
||||
|
||||
@ -8,8 +8,6 @@
|
||||
*/
|
||||
namespace SqlParser\Statements;
|
||||
|
||||
use SqlParser\Statements\MaintenanceStatement;
|
||||
|
||||
/**
|
||||
* `CHECKSUM` statement.
|
||||
*
|
||||
|
||||
@ -41,12 +41,10 @@ class CreateStatement extends Statement
|
||||
// CREATE TABLE
|
||||
'TEMPORARY' => 1,
|
||||
|
||||
// CREATE FUNCTION / PROCEDURE and CREATE VIEW
|
||||
'DEFINER' => array(1, 'var='),
|
||||
|
||||
// CREATE VIEW
|
||||
'OR REPLACE' => array(2, 'var='),
|
||||
'ALGORITHM' => array(3, 'var='),
|
||||
// `DEFINER` is also used for `CREATE FUNCTION / PROCEDURE`
|
||||
'DEFINER' => array(4, 'var='),
|
||||
'SQL SECURITY' => array(5, 'var'),
|
||||
|
||||
@ -109,11 +107,11 @@ class CreateStatement extends Statement
|
||||
'LANGUAGE SQL' => 2,
|
||||
'DETERMINISTIC' => 3,
|
||||
'NOT DETERMINISTIC' => 3,
|
||||
'CONSTAINS SQL' => 4,
|
||||
'CONTAINS SQL' => 4,
|
||||
'NO SQL' => 4,
|
||||
'READS SQL DATA' => 4,
|
||||
'MODIFIES SQL DATA' => 4,
|
||||
'SQL SEQURITY DEFINER' => array(5, 'var'),
|
||||
'SQL SECURITY DEFINER' => array(5, 'var'),
|
||||
);
|
||||
|
||||
/**
|
||||
|
||||
@ -9,6 +9,11 @@
|
||||
namespace SqlParser\Statements;
|
||||
|
||||
use SqlParser\Statement;
|
||||
use SqlParser\Fragments\ArrayFragment;
|
||||
use SqlParser\Fragments\FieldFragment;
|
||||
use SqlParser\Fragments\LimitKeyword;
|
||||
use SqlParser\Fragments\OrderKeyword;
|
||||
use SqlParser\Fragments\WhereKeyword;
|
||||
|
||||
/**
|
||||
* `DELETE` statement.
|
||||
|
||||
@ -9,6 +9,7 @@
|
||||
namespace SqlParser\Statements;
|
||||
|
||||
use SqlParser\Statement;
|
||||
use SqlParser\Fragments\FieldFragment;
|
||||
|
||||
/**
|
||||
* `DROP` statement.
|
||||
|
||||
@ -8,8 +8,6 @@
|
||||
*/
|
||||
namespace SqlParser\Statements;
|
||||
|
||||
use SqlParser\Statements\NotImplementedStatement;
|
||||
|
||||
/**
|
||||
* `EXPLAIN` statement.
|
||||
*
|
||||
|
||||
@ -9,6 +9,8 @@
|
||||
namespace SqlParser\Statements;
|
||||
|
||||
use SqlParser\Statement;
|
||||
use SqlParser\Fragments\IntoKeyword;
|
||||
use SqlParser\Fragments\ValuesKeyword;
|
||||
|
||||
/**
|
||||
* `INSERT` statement.
|
||||
|
||||
@ -12,6 +12,7 @@ use SqlParser\Parser;
|
||||
use SqlParser\Statement;
|
||||
use SqlParser\Token;
|
||||
use SqlParser\TokensList;
|
||||
use SqlParser\Fragments\FieldFragment;
|
||||
use SqlParser\Fragments\OptionsFragment;
|
||||
|
||||
/**
|
||||
|
||||
@ -29,6 +29,7 @@ class NotImplementedStatement extends Statement
|
||||
|
||||
/**
|
||||
* The part of the statement that can't be parsed.
|
||||
*
|
||||
* @var Token[]
|
||||
*/
|
||||
public $unknown = array();
|
||||
|
||||
@ -9,6 +9,7 @@
|
||||
namespace SqlParser\Statements;
|
||||
|
||||
use SqlParser\Statement;
|
||||
use SqlParser\Fragments\FieldFragment;
|
||||
|
||||
/**
|
||||
* `OPTIMIZE` statement.
|
||||
|
||||
@ -12,6 +12,7 @@ use SqlParser\Parser;
|
||||
use SqlParser\Statement;
|
||||
use SqlParser\Token;
|
||||
use SqlParser\TokensList;
|
||||
use SqlParser\Fragments\RenameKeyword;
|
||||
|
||||
/**
|
||||
* `RENAME` statement.
|
||||
|
||||
@ -8,8 +8,6 @@
|
||||
*/
|
||||
namespace SqlParser\Statements;
|
||||
|
||||
use SqlParser\Statements\MaintenanceStatement;
|
||||
|
||||
/**
|
||||
* `REPAIR` statement.
|
||||
*
|
||||
|
||||
@ -9,6 +9,9 @@
|
||||
namespace SqlParser\Statements;
|
||||
|
||||
use SqlParser\Statement;
|
||||
use SqlParser\Fragments\IntoKeyword;
|
||||
use SqlParser\Fragments\SetKeyword;
|
||||
use SqlParser\Fragments\ValuesKeyword;
|
||||
|
||||
/**
|
||||
* `REPLACE` statement.
|
||||
|
||||
@ -8,8 +8,6 @@
|
||||
*/
|
||||
namespace SqlParser\Statements;
|
||||
|
||||
use SqlParser\Statements\MaintenanceStatement;
|
||||
|
||||
/**
|
||||
* `RESTORE` statement.
|
||||
*
|
||||
|
||||
@ -9,6 +9,14 @@
|
||||
namespace SqlParser\Statements;
|
||||
|
||||
use SqlParser\Statement;
|
||||
use SqlParser\Fragments\ArrayFragment;
|
||||
use SqlParser\Fragments\CallKeyword;
|
||||
use SqlParser\Fragments\FieldFragment;
|
||||
use SqlParser\Fragments\IntoKeyword;
|
||||
use SqlParser\Fragments\JoinKeyword;
|
||||
use SqlParser\Fragments\LimitKeyword;
|
||||
use SqlParser\Fragments\OrderKeyword;
|
||||
use SqlParser\Fragments\WhereKeyword;
|
||||
|
||||
/**
|
||||
* `SELECT` statement.
|
||||
|
||||
@ -8,8 +8,6 @@
|
||||
*/
|
||||
namespace SqlParser\Statements;
|
||||
|
||||
use SqlParser\Statements\NotImplementedStatement;
|
||||
|
||||
/**
|
||||
* `SHOW` statement.
|
||||
*
|
||||
|
||||
@ -8,16 +8,8 @@
|
||||
*/
|
||||
namespace SqlParser\Statements;
|
||||
|
||||
use SqlParser\Parser;
|
||||
use SqlParser\Statement;
|
||||
use SqlParser\Token;
|
||||
use SqlParser\TokensList;
|
||||
use SqlParser\Fragments\ArrayFragment;
|
||||
use SqlParser\Fragments\DataTypeFragment;
|
||||
use SqlParser\Fragments\FieldDefFragment;
|
||||
use SqlParser\Fragments\FieldFragment;
|
||||
use SqlParser\Fragments\OptionsFragment;
|
||||
use SqlParser\Fragments\ParamDefFragment;
|
||||
|
||||
/**
|
||||
* `TRUNCATE` statement.
|
||||
|
||||
@ -9,6 +9,11 @@
|
||||
namespace SqlParser\Statements;
|
||||
|
||||
use SqlParser\Statement;
|
||||
use SqlParser\Fragments\FieldFragment;
|
||||
use SqlParser\Fragments\LimitKeyword;
|
||||
use SqlParser\Fragments\OrderKeyword;
|
||||
use SqlParser\Fragments\SetKeyword;
|
||||
use SqlParser\Fragments\WhereKeyword;
|
||||
|
||||
/**
|
||||
* `UPDATE` statement.
|
||||
|
||||
@ -25,7 +25,7 @@ class Token
|
||||
|
||||
/**
|
||||
* This type is used when the token is invalid or its type cannot be
|
||||
* determiend because of the ambigous context. Further analysis might be
|
||||
* determined because of the ambiguous context. Further analysis might be
|
||||
* required to detect its type.
|
||||
*
|
||||
* @var int
|
||||
@ -186,7 +186,7 @@ class Token
|
||||
public $flags;
|
||||
|
||||
/**
|
||||
* The position in the inial string where this token started.
|
||||
* The position in the initial string where this token started.
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
|
||||
@ -28,7 +28,7 @@ class UtfString implements \ArrayAccess
|
||||
{
|
||||
|
||||
/**
|
||||
* The raw, multibyte string.
|
||||
* The raw, multi-byte string.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
@ -143,6 +143,8 @@ class UtfString implements \ArrayAccess
|
||||
* @param int $offset The offset to be set.
|
||||
* @param string $value The value to be set.
|
||||
*
|
||||
* @throws \Exception Not implemented.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function offsetSet($offset, $value)
|
||||
@ -155,6 +157,8 @@ class UtfString implements \ArrayAccess
|
||||
*
|
||||
* @param int $offset The value to be unset.
|
||||
*
|
||||
* @throws \Exception Not implemented.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function offsetUnset($offset)
|
||||
@ -166,7 +170,7 @@ class UtfString implements \ArrayAccess
|
||||
* Gets the length of an UTF-8 character.
|
||||
*
|
||||
* According to RFC 3629, a UTF-8 character can have at most 4 bytes.
|
||||
* However, this implemenation supports UTF-8 characters containing up to 6
|
||||
* However, this implementation supports UTF-8 characters containing up to 6
|
||||
* bytes.
|
||||
*
|
||||
* @param string $byte The byte to be analyzed.
|
||||
|
||||
@ -8,7 +8,6 @@
|
||||
*/
|
||||
namespace SqlParser\Utils;
|
||||
|
||||
use SqlParser\Statement;
|
||||
use SqlParser\Statements\SelectStatement;
|
||||
|
||||
/**
|
||||
@ -26,8 +25,8 @@ class Misc
|
||||
/**
|
||||
* Gets a list of all aliases and their original names.
|
||||
*
|
||||
* @param Statement $statement The statement to be processed.
|
||||
* @param string $database The name of the database.
|
||||
* @param SelectStatement $statement The statement to be processed.
|
||||
* @param string $database The name of the database.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
|
||||
@ -500,7 +500,7 @@ class Query
|
||||
* 0 only for the clause
|
||||
* 1 for everything after
|
||||
* If string, the name of the first clause that
|
||||
* shouldn't be included.
|
||||
* should not be included.
|
||||
* @param bool $skipFirst Whether to skip the first keyword in clause.
|
||||
*
|
||||
* @return string
|
||||
@ -510,44 +510,44 @@ class Query
|
||||
|
||||
/**
|
||||
* The index of the current clause.
|
||||
* @var int
|
||||
* @var int $currIdx
|
||||
*/
|
||||
$currIdx = 0;
|
||||
|
||||
/**
|
||||
* The count of brackets.
|
||||
* We keep track of them so we won't insert the clause in a subquery.
|
||||
* @var int
|
||||
* @var int $brackets
|
||||
*/
|
||||
$brackets = 0;
|
||||
|
||||
/**
|
||||
* The string to be returned.
|
||||
* @var string
|
||||
* @var string $ret
|
||||
*/
|
||||
$ret = '';
|
||||
|
||||
/**
|
||||
* The clauses of this type of statement and their index.
|
||||
* @var array
|
||||
* @var array $clauses
|
||||
*/
|
||||
$clauses = array_flip(array_keys($statement::$CLAUSES));
|
||||
|
||||
/**
|
||||
* Lexer used for lexing the clause.
|
||||
* @var Lexer
|
||||
* @var Lexer $lexer
|
||||
*/
|
||||
$lexer = new Lexer($clause);
|
||||
|
||||
/**
|
||||
* The type of this clause.
|
||||
* @var string
|
||||
* @var string $clauseType
|
||||
*/
|
||||
$clauseType = $lexer->list->getNextOfType(Token::TYPE_KEYWORD)->value;
|
||||
|
||||
/**
|
||||
* The index of this clause.
|
||||
* @var int
|
||||
* @var int $clauseIdx
|
||||
*/
|
||||
$clauseIdx = $clauses[$clauseType];
|
||||
|
||||
@ -669,7 +669,7 @@ class Query
|
||||
|
||||
/**
|
||||
* Value to be returned.
|
||||
* @var string
|
||||
* @var string $ret
|
||||
*/
|
||||
$ret = '';
|
||||
|
||||
|
||||
@ -10,7 +10,6 @@ namespace SqlParser\Utils;
|
||||
|
||||
use SqlParser\Lexer;
|
||||
use SqlParser\Parser;
|
||||
use SqlParser\Statement;
|
||||
use SqlParser\Fragments\DataTypeFragment;
|
||||
use SqlParser\Fragments\ParamDefFragment;
|
||||
use SqlParser\Statements\CreateStatement;
|
||||
|
||||
@ -8,11 +8,6 @@
|
||||
*/
|
||||
namespace SqlParser\Utils;
|
||||
|
||||
use SqlParser\Lexer;
|
||||
use SqlParser\Parser;
|
||||
use SqlParser\Statement;
|
||||
use SqlParser\Fragments\DataTypeFragment;
|
||||
use SqlParser\Fragments\ParamDefFragment;
|
||||
use SqlParser\Statements\CreateStatement;
|
||||
|
||||
/**
|
||||
|
||||
Loading…
Reference in New Issue
Block a user