/usr/share/php/PhpMyAdmin/SqlParser/Statements
NameSizeModeActions
AlterStatement.php37680644editdlrm
AnalyzeStatement.php6360644editdlrm
BackupStatement.php5270644editdlrm
CallStatement.php7390644editdlrm
CheckStatement.php5270644editdlrm
ChecksumStatement.php4510644editdlrm
CreateStatement.php229280644editdlrm
DeleteStatement.php116780644editdlrm
DropStatement.php14330644editdlrm
ExplainStatement.php2000644editdlrm
InsertStatement.php74590644editdlrm
LoadStatement.php110740644editdlrm
LockStatement.php34940644editdlrm
MaintenanceStatement.php15030644editdlrm
NotImplementedStatement.php13740644editdlrm
OptimizeStatement.php6410644editdlrm
PurgeStatement.php38530644editdlrm
RenameStatement.php13770644editdlrm
RepairStatement.php5700644editdlrm
ReplaceStatement.php53350644editdlrm
RestoreStatement.php4770644editdlrm
SelectStatement.php74360644editdlrm
SetStatement.php20280644editdlrm
ShowStatement.php12800644editdlrm
TransactionStatement.php23480644editdlrm
TruncateStatement.php7470644editdlrm
UpdateStatement.php23340644editdlrm
Edit: /usr/share/php/PhpMyAdmin/SqlParser/Statements/AlterStatement.php (3768B)
1, 'OFFLINE' => 1, 'IGNORE' => 2, 'DATABASE' => 3, 'EVENT' => 3, 'FUNCTION' => 3, 'PROCEDURE' => 3, 'SERVER' => 3, 'TABLE' => 3, 'TABLESPACE' => 3, 'VIEW' => 3, ]; /** * @param Parser $parser the instance that requests parsing * @param TokensList $list the list of tokens to be parsed */ public function parse(Parser $parser, TokensList $list) { ++$list->idx; // Skipping `ALTER`. $this->options = OptionsArray::parse( $parser, $list, static::$OPTIONS ); ++$list->idx; // Parsing affected table. $this->table = Expression::parse( $parser, $list, [ 'parseField' => 'table', 'breakOnAlias' => true, ] ); ++$list->idx; // Skipping field. /** * The state of the parser. * * Below are the states of the parser. * * 0 -----------------[ alter operation ]-----------------> 1 * * 1 -------------------------[ , ]-----------------------> 0 * * @var int */ $state = 0; for (; $list->idx < $list->count; ++$list->idx) { /** * Token parsed at this moment. * * @var Token */ $token = $list->tokens[$list->idx]; // End of statement. if ($token->type === Token::TYPE_DELIMITER) { break; } // Skipping whitespaces and comments. if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { continue; } if ($state === 0) { $options = []; if ($this->options->has('DATABASE')) { $options = AlterOperation::$DB_OPTIONS; } elseif ($this->options->has('TABLE')) { $options = AlterOperation::$TABLE_OPTIONS; } elseif ($this->options->has('VIEW')) { $options = AlterOperation::$VIEW_OPTIONS; } $this->altered[] = AlterOperation::parse($parser, $list, $options); $state = 1; } elseif ($state === 1) { if (($token->type === Token::TYPE_OPERATOR) && ($token->value === ',')) { $state = 0; } } } } /** * @return string */ public function build() { $tmp = []; foreach ($this->altered as $altered) { $tmp[] = $altered::build($altered); } return 'ALTER ' . OptionsArray::build($this->options) . ' ' . Expression::build($this->table) . ' ' . implode(', ', $tmp); } }