diff --git a/libraries/sql-parser/src/Component.php b/libraries/sql-parser/src/Component.php index 1678706d11..eff88e66be 100644 --- a/libraries/sql-parser/src/Component.php +++ b/libraries/sql-parser/src/Component.php @@ -70,12 +70,13 @@ namespace SqlParser { * `static::parse`. * * @param mixed $component The component to be built. + * @param array $options Parameters for building. * * @throws \Exception Not implemented yet. * * @return string */ - public static function build($component) + public static function build($component, array $options = array()) { // This method should be abstract, but it can't be both static and // abstract. diff --git a/libraries/sql-parser/src/Components/AlterOperation.php b/libraries/sql-parser/src/Components/AlterOperation.php index c99d3911ae..ee9302c54d 100644 --- a/libraries/sql-parser/src/Components/AlterOperation.php +++ b/libraries/sql-parser/src/Components/AlterOperation.php @@ -202,7 +202,6 @@ class AlterOperation extends Component __('Unrecognized alter operation.'), $list->tokens[$list->idx] ); - return null; } --$list->idx; @@ -211,14 +210,15 @@ class AlterOperation extends Component /** * @param AlterOperation $component The component to be built. + * @param array $options Parameters for building. * * @return string */ - public static function build($component) + public static function build($component, array $options = array()) { - $ret = OptionsArray::build($component->options) . ' '; - if (!empty($component->field)) { - $ret .= Expression::build($component->field) . ' '; + $ret = $component->options . ' '; + if ((isset($component->field)) && ($component->field !== '')) { + $ret .= $component->field . ' '; } $ret .= TokensList::build($component->unknown); return $ret; diff --git a/libraries/sql-parser/src/Components/Array2d.php b/libraries/sql-parser/src/Components/Array2d.php index 268dcea9b0..e4c0ed7504 100644 --- a/libraries/sql-parser/src/Components/Array2d.php +++ b/libraries/sql-parser/src/Components/Array2d.php @@ -124,10 +124,11 @@ class Array2d extends Component /** * @param ArrayObj[] $component The component to be built. + * @param array $options Parameters for building. * * @return string */ - public static function build($component) + public static function build($component, array $options = array()) { return ArrayObj::build($component); } diff --git a/libraries/sql-parser/src/Components/ArrayObj.php b/libraries/sql-parser/src/Components/ArrayObj.php index 0e0b1830ed..9f4e972991 100644 --- a/libraries/sql-parser/src/Components/ArrayObj.php +++ b/libraries/sql-parser/src/Components/ArrayObj.php @@ -136,7 +136,6 @@ class ArrayObj extends Component break; } } - } return $ret; @@ -144,27 +143,18 @@ class ArrayObj extends Component /** * @param ArrayObj|ArrayObj[] $component The component to be built. + * @param array $options Parameters for building. * * @return string */ - public static function build($component) + public static function build($component, array $options = array()) { if (is_array($component)) { - $values = array(); - foreach ($component as $c) { - $values[] = static::build($c); - } - return implode(', ', $values); + return implode(', ', $component); + } elseif (!empty($component->raw)) { + return '(' . implode(', ', $component->raw) . ')'; } else { - $values = array(); - if (!empty($component->raw)) { - $values = $component->raw; - } else { - foreach ($component->values as $value) { - $values[] = $value; - } - } - return '(' . implode(', ', $values) . ')'; + return '(' . implode(', ', $component->values) . ')'; } } } diff --git a/libraries/sql-parser/src/Components/Condition.php b/libraries/sql-parser/src/Components/Condition.php index 1f515dcfd4..43347a8799 100644 --- a/libraries/sql-parser/src/Components/Condition.php +++ b/libraries/sql-parser/src/Components/Condition.php @@ -197,15 +197,16 @@ class Condition extends Component /** * @param Condition[] $component The component to be built. + * @param array $options Parameters for building. * * @return string */ - public static function build($component) + public static function build($component, array $options = array()) { - $ret = array(); - foreach ($component as $c) { - $ret[] = $c->expr; + if (is_array($component)) { + return implode(' ', $component); + } else { + return $component->expr; } - return implode(' ', $ret); } } diff --git a/libraries/sql-parser/src/Components/CreateDefinition.php b/libraries/sql-parser/src/Components/CreateDefinition.php index c4949d4765..0ef7c4a1a1 100644 --- a/libraries/sql-parser/src/Components/CreateDefinition.php +++ b/libraries/sql-parser/src/Components/CreateDefinition.php @@ -272,17 +272,14 @@ class CreateDefinition extends Component /** * @param CreateDefinition|CreateDefinition[] $component The component to be built. + * @param array $options Parameters for building. * * @return string */ - public static function build($component) + public static function build($component, array $options = array()) { if (is_array($component)) { - $ret = array(); - foreach ($component as $c) { - $ret[] = static::build($c); - } - return "(\n " . implode(",\n ", $ret) . "\n)"; + return "(\n " . implode(",\n ", $component) . "\n)"; } else { $tmp = ''; @@ -290,23 +287,26 @@ class CreateDefinition extends Component $tmp .= 'CONSTRAINT '; } - if (isset($component->name) && strlen($component->name)) { + if ((isset($component->name)) && ($component->name !== '')) { $tmp .= Context::escape($component->name) . ' '; } if (!empty($component->type)) { - $tmp .= DataType::build($component->type) . ' '; + $tmp .= DataType::build( + $component->type, + array('lowercase' => true) + ) . ' '; } if (!empty($component->key)) { - $tmp .= Key::build($component->key) . ' '; + $tmp .= $component->key . ' '; } if (!empty($component->references)) { - $tmp .= 'REFERENCES ' . Reference::build($component->references) . ' '; + $tmp .= 'REFERENCES ' . $component->references . ' '; } - $tmp .= OptionsArray::build($component->options); + $tmp .= $component->options; return trim($tmp); } diff --git a/libraries/sql-parser/src/Components/DataType.php b/libraries/sql-parser/src/Components/DataType.php index 22e7973831..a3aca73d6f 100644 --- a/libraries/sql-parser/src/Components/DataType.php +++ b/libraries/sql-parser/src/Components/DataType.php @@ -151,18 +151,20 @@ class DataType extends Component /** * @param DataType $component The component to be built. + * @param array $options Parameters for building. * * @return string */ - public static function build($component) + public static function build($component, array $options = array()) { - $tmp = ''; + $name = (empty($options['lowercase'])) ? + $component->name : strtolower($component->name); + + $parameters = ''; if (!empty($component->parameters)) { - $tmp = '(' . implode(',', $component->parameters) . ')'; + $parameters = '(' . implode(',', $component->parameters) . ')'; } - return trim( - strtolower($component->name) . $tmp . ' ' - . OptionsArray::build($component->options) - ); + + return trim($name . $parameters . ' ' . $component->options); } } diff --git a/libraries/sql-parser/src/Components/Expression.php b/libraries/sql-parser/src/Components/Expression.php index 11e713217e..1f8752ed76 100644 --- a/libraries/sql-parser/src/Components/Expression.php +++ b/libraries/sql-parser/src/Components/Expression.php @@ -350,32 +350,37 @@ class Expression extends Component } /** - * @param Expression $component The component to be built. + * @param Expression|Expression[] $component The component to be built. + * @param array $options Parameters for building. * * @return string */ - public static function build($component) + public static function build($component, array $options = array()) { - if (!empty($component->expr)) { - $ret = $component->expr; + if (is_array($component)) { + return implode($component, ', '); } else { - $fields = array(); - if (!empty($component->database)) { - $fields[] = $component->database; + if (!empty($component->expr)) { + $ret = $component->expr; + } else { + $fields = array(); + if ((isset($component->database)) && ($component->database !== '')) { + $fields[] = $component->database; + } + if ((isset($component->table)) && ($component->table !== '')) { + $fields[] = $component->table; + } + if ((isset($component->column)) && ($component->column !== '')) { + $fields[] = $component->column; + } + $ret = implode('.', Context::escape($fields)); } - if (!empty($component->table)) { - $fields[] = $component->table; - } - if (!empty($component->column)) { - $fields[] = $component->column; - } - $ret = implode('.', Context::escape($fields)); - } - if (!empty($component->alias)) { - $ret .= ' AS ' . Context::escape($component->alias); - } + if (!empty($component->alias)) { + $ret .= ' AS ' . Context::escape($component->alias); + } - return $ret; + return $ret; + } } } diff --git a/libraries/sql-parser/src/Components/ExpressionArray.php b/libraries/sql-parser/src/Components/ExpressionArray.php index 82e67c9ffc..8327296fe4 100644 --- a/libraries/sql-parser/src/Components/ExpressionArray.php +++ b/libraries/sql-parser/src/Components/ExpressionArray.php @@ -106,10 +106,11 @@ class ExpressionArray extends Component /** * @param Expression[] $component The component to be built. + * @param array $options Parameters for building. * * @return string */ - public static function build($component) + public static function build($component, array $options = array()) { $ret = array(); foreach ($component as $frag) { diff --git a/libraries/sql-parser/src/Components/FunctionCall.php b/libraries/sql-parser/src/Components/FunctionCall.php index 43eb082ea9..54e95ac25a 100644 --- a/libraries/sql-parser/src/Components/FunctionCall.php +++ b/libraries/sql-parser/src/Components/FunctionCall.php @@ -115,11 +115,12 @@ class FunctionCall extends Component /** * @param FunctionCall $component The component to be built. + * @param array $options Parameters for building. * * @return string */ - public static function build($component) + public static function build($component, array $options = array()) { - return $component->name . ArrayObj::build($component->parameters); + return $component->name . $component->parameters; } } diff --git a/libraries/sql-parser/src/Components/IntoKeyword.php b/libraries/sql-parser/src/Components/IntoKeyword.php index 5e4afcbce4..b230308fc6 100644 --- a/libraries/sql-parser/src/Components/IntoKeyword.php +++ b/libraries/sql-parser/src/Components/IntoKeyword.php @@ -133,15 +133,16 @@ class IntoKeyword extends Component /** * @param IntoKeyword $component The component to be built. + * @param array $options Parameters for building. * * @return string */ - public static function build($component) + public static function build($component, array $options = array()) { if ($component->dest instanceof Expression) { $columns = !empty($component->columns) ? '(' . implode(', ', $component->columns) . ')' : ''; - return Expression::build($component->dest) . $columns; + return $component->dest . $columns; } else { return 'OUTFILE "' . $component->dest . '"'; } diff --git a/libraries/sql-parser/src/Components/JoinKeyword.php b/libraries/sql-parser/src/Components/JoinKeyword.php index 237022a16c..529763bed5 100644 --- a/libraries/sql-parser/src/Components/JoinKeyword.php +++ b/libraries/sql-parser/src/Components/JoinKeyword.php @@ -151,15 +151,16 @@ class JoinKeyword extends Component /** * @param JoinKeyword[] $component The component to be built. + * @param array $options Parameters for building. * * @return string */ - public static function build($component) + public static function build($component, array $options = array()) { $ret = array(); foreach ($component as $c) { - $ret[] = (($c->type === 'JOIN') ? 'JOIN ' : ($c->type . ' JOIN ')) . - Expression::build($c->expr) . ' ON ' . Condition::build($c->on); + $ret[] = (($c->type === 'JOIN') ? 'JOIN ' : ($c->type . ' JOIN ')) + . $c->expr . ' ON ' . Condition::build($c->on); } return implode(' ', $ret); } diff --git a/libraries/sql-parser/src/Components/Key.php b/libraries/sql-parser/src/Components/Key.php index b016310d2a..89371fa9f5 100644 --- a/libraries/sql-parser/src/Components/Key.php +++ b/libraries/sql-parser/src/Components/Key.php @@ -145,7 +145,6 @@ class Key extends Component ++$list->idx; break; } - } --$list->idx; @@ -153,18 +152,19 @@ class Key extends Component } /** - * @param Key $component The component to be built. + * @param Key $component The component to be built. + * @param array $options Parameters for building. * * @return string */ - public static function build($component) + public static function build($component, array $options = array()) { $ret = $component->type . ' '; if (!empty($component->name)) { $ret .= Context::escape($component->name) . ' '; } - $ret .= '(' . implode(',', Context::escape($component->columns)) . ')'; - $ret .= OptionsArray::build($component->options); + $ret .= '(' . implode(',', Context::escape($component->columns)) . ') ' + . $component->options; return trim($ret); } } diff --git a/libraries/sql-parser/src/Components/Limit.php b/libraries/sql-parser/src/Components/Limit.php index 8622c96d9e..edf663aab1 100644 --- a/libraries/sql-parser/src/Components/Limit.php +++ b/libraries/sql-parser/src/Components/Limit.php @@ -122,10 +122,11 @@ class Limit extends Component /** * @param Limit $component The component to be built. + * @param array $options Parameters for building. * * @return string */ - public static function build($component) + public static function build($component, array $options = array()) { if (empty($component->offset)) { return $component->rowCount; diff --git a/libraries/sql-parser/src/Components/OptionsArray.php b/libraries/sql-parser/src/Components/OptionsArray.php index 6b43844c24..f24635ad47 100644 --- a/libraries/sql-parser/src/Components/OptionsArray.php +++ b/libraries/sql-parser/src/Components/OptionsArray.php @@ -251,14 +251,16 @@ class OptionsArray extends Component /** * @param OptionsArray $component The component to be built. + * @param array $options Parameters for building. * * @return string */ - public static function build($component) + public static function build($component, array $options = array()) { - if ((empty($component)) || (!is_array($component->options))) { + if (empty($component->options)) { return ''; } + $options = array(); foreach ($component->options as $option) { if (!is_array($option)) { @@ -266,9 +268,7 @@ class OptionsArray extends Component } else { $options[] = $option['name'] . (!empty($option['equals']) ? '=' : ' ') - . (!empty($option['expr']) ? ((string) $option['expr']) : $option['value']); - // If `$option['expr']` happens to be a component, the magic - // method will build it automatically. + . (!empty($option['expr']) ? $option['expr'] : $option['value']); } } return implode(' ', $options); diff --git a/libraries/sql-parser/src/Components/OrderKeyword.php b/libraries/sql-parser/src/Components/OrderKeyword.php index 81bff2f7a2..9c1ad5920d 100644 --- a/libraries/sql-parser/src/Components/OrderKeyword.php +++ b/libraries/sql-parser/src/Components/OrderKeyword.php @@ -126,20 +126,17 @@ class OrderKeyword extends Component } /** - * @param OrderKeyword $component The component to be built. + * @param OrderKeyword|OrderKeyword[] $component The component to be built. + * @param array $options Parameters for building. * * @return string */ - public static function build($component) + public static function build($component, array $options = array()) { if (is_array($component)) { - $ret = array(); - foreach ($component as $c) { - $ret[] = static::build($c); - } - return implode(", ", $ret); + return implode(', ', $component); } else { - return Expression::build($component->expr) . ' ' . $component->type; + return $component->expr . ' ' . $component->type; } } } diff --git a/libraries/sql-parser/src/Components/ParameterDefinition.php b/libraries/sql-parser/src/Components/ParameterDefinition.php index 79b4845e22..9ed9cfccb0 100644 --- a/libraries/sql-parser/src/Components/ParameterDefinition.php +++ b/libraries/sql-parser/src/Components/ParameterDefinition.php @@ -130,7 +130,7 @@ class ParameterDefinition extends Component } // Last iteration was not saved. - if (!empty($expr->name)) { + if ((isset($expr->name)) && ($expr->name !== '')) { $ret[] = $expr; } @@ -140,23 +140,23 @@ class ParameterDefinition extends Component /** * @param ParameterDefinition[] $component The component to be built. + * @param array $options Parameters for building. * * @return string */ - public static function build($component) + public static function build($component, array $options = array()) { - $ret = array(); - foreach ($component as $c) { + if (is_array($component)) { + return '(' . implode(', ', $component) . ')'; + } else { $tmp = ''; - if (!empty($c->inOut)) { - $tmp .= $c->inOut . ' '; + if (!empty($component->inOut)) { + $tmp .= $component->inOut . ' '; } - $ret[] = trim( - $tmp . Context::escape($c->name) . ' ' . - DataType::build($c->type) + return trim( + $tmp . Context::escape($component->name) . ' ' . $component->type ); } - return '(' . implode(', ', $ret) . ')'; } } diff --git a/libraries/sql-parser/src/Components/PartitionDefinition.php b/libraries/sql-parser/src/Components/PartitionDefinition.php index df6d3f6e4e..34acbb8244 100644 --- a/libraries/sql-parser/src/Components/PartitionDefinition.php +++ b/libraries/sql-parser/src/Components/PartitionDefinition.php @@ -192,17 +192,14 @@ class PartitionDefinition extends Component /** * @param PartitionDefinition|PartitionDefinition[] $component The component to be built. + * @param array $options Parameters for building. * * @return string */ - public static function build($component) + public static function build($component, array $options = array()) { if (is_array($component)) { - $ret = array(); - foreach ($component as $c) { - $ret[] = static::build($c); - } - return "(\n" . implode(",\n", $ret) . "\n)"; + return "(\n" . implode(",\n", $component) . "\n)"; } else { if ($component->isSubpartition) { return 'SUBPARTITION ' . $component->name; @@ -213,7 +210,6 @@ class PartitionDefinition extends Component . ' VALUES ' . $component->type . ' ' . $component->expr . $subpartitions; } - } } } diff --git a/libraries/sql-parser/src/Components/Reference.php b/libraries/sql-parser/src/Components/Reference.php index 36d3971477..6826f7f4ae 100644 --- a/libraries/sql-parser/src/Components/Reference.php +++ b/libraries/sql-parser/src/Components/Reference.php @@ -137,15 +137,16 @@ class Reference extends Component /** * @param Reference $component The component to be built. + * @param array $options Parameters for building. * * @return string */ - public static function build($component) + public static function build($component, array $options = array()) { return trim( Context::escape($component->table) . ' (' . implode(', ', Context::escape($component->columns)) . ') ' - . OptionsArray::build($component->options) + . $component->options ); } } diff --git a/libraries/sql-parser/src/Components/RenameOperation.php b/libraries/sql-parser/src/Components/RenameOperation.php index 34c62bb415..5f7c9a5723 100644 --- a/libraries/sql-parser/src/Components/RenameOperation.php +++ b/libraries/sql-parser/src/Components/RenameOperation.php @@ -162,20 +162,16 @@ class RenameOperation extends Component /** * @param RenameOperation $component The component to be built. + * @param array $options Parameters for building. * * @return string */ - public static function build($component) + public static function build($component, array $options = array()) { if (is_array($component)) { - $values = array(); - foreach ($component as $c) { - $values[] = static::build($c); - } - return implode(', ', $values); + return implode(', ', $component); } else { - return Expression::build($component->old) . ' TO ' - . Expression::build($component->new); + return $component->old . ' TO ' . $component->new; } } } diff --git a/libraries/sql-parser/src/Components/SetOperation.php b/libraries/sql-parser/src/Components/SetOperation.php index 8b6af87458..3d04320fb2 100644 --- a/libraries/sql-parser/src/Components/SetOperation.php +++ b/libraries/sql-parser/src/Components/SetOperation.php @@ -122,17 +122,14 @@ class SetOperation extends Component /** * @param SetOperation|SetOperation[] $component The component to be built. + * @param array $options Parameters for building. * * @return string */ - public static function build($component) + public static function build($component, array $options = array()) { if (is_array($component)) { - $ret = array(); - foreach ($component as $c) { - $ret[] = static::build($c); - } - return implode(", ", $ret); + return implode(', ', $component); } else { return $component->column . ' = ' . $component->value; } diff --git a/libraries/sql-parser/src/Components/UnionKeyword.php b/libraries/sql-parser/src/Components/UnionKeyword.php index cbdb529138..d1a1ef5ac4 100644 --- a/libraries/sql-parser/src/Components/UnionKeyword.php +++ b/libraries/sql-parser/src/Components/UnionKeyword.php @@ -25,15 +25,12 @@ class UnionKeyword extends Component /** * @param SelectStatement[] $component The component to be built. + * @param array $options Parameters for building. * * @return string */ - public static function build($component) + public static function build($component, array $options = array()) { - $ret = array(); - foreach ($component as $c) { - $ret[] = $c->build(); - } - return implode(" UNION ", $ret); + return implode(' UNION ', $component); } } diff --git a/libraries/sql-parser/src/Lexer.php b/libraries/sql-parser/src/Lexer.php index 1d1839957e..e4561de9ff 100644 --- a/libraries/sql-parser/src/Lexer.php +++ b/libraries/sql-parser/src/Lexer.php @@ -331,7 +331,7 @@ namespace SqlParser { $pos = $this->last + 1; // Parsing the delimiter. - $this->delimiter = ''; + $this->delimiter = null; while ((++$this->last < $this->len) && (!Context::isWhitespace($this->str[$this->last]))) { $this->delimiter .= $this->str[$this->last]; } diff --git a/libraries/sql-parser/src/Statements/CreateStatement.php b/libraries/sql-parser/src/Statements/CreateStatement.php index bc7cf7355f..9b07737d7f 100644 --- a/libraries/sql-parser/src/Statements/CreateStatement.php +++ b/libraries/sql-parser/src/Statements/CreateStatement.php @@ -343,7 +343,7 @@ class CreateStatement extends Statement ) ); - if (empty($this->name)) { + if ((!isset($this->name)) || ($this->name === '')) { $parser->error( __('The name of the entity was expected.'), $list->tokens[$list->idx] diff --git a/libraries/sql-parser/src/Utils/Formatter.php b/libraries/sql-parser/src/Utils/Formatter.php index 998d94b2b6..ebdea42ece 100644 --- a/libraries/sql-parser/src/Utils/Formatter.php +++ b/libraries/sql-parser/src/Utils/Formatter.php @@ -80,7 +80,7 @@ class Formatter * * @var string */ - 'indentation' => " ", + 'indentation' => " ", /** * Whether comments should be removed or not. diff --git a/libraries/sql-parser/src/Utils/Misc.php b/libraries/sql-parser/src/Utils/Misc.php index 1597648500..cec5653688 100644 --- a/libraries/sql-parser/src/Utils/Misc.php +++ b/libraries/sql-parser/src/Utils/Misc.php @@ -60,11 +60,12 @@ class Misc } foreach ($expressions as $expr) { - if (empty($expr->table)) { + if ((!isset($expr->table)) || ($expr->table === '')) { continue; } - $thisDb = empty($expr->database) ? $database : $expr->database; + $thisDb = ((isset($expr->database)) && ($expr->database !== '')) ? + $expr->database : $database; if (!isset($retval[$thisDb])) { $retval[$thisDb] = array( @@ -75,7 +76,8 @@ class Misc if (!isset($retval[$thisDb]['tables'][$expr->table])) { $retval[$thisDb]['tables'][$expr->table] = array( - 'alias' => empty($expr->alias) ? null : $expr->alias, + 'alias' => ((isset($expr->alias)) && ($expr->alias !== '')) ? + $expr->alias : null, 'columns' => array(), ); } @@ -87,20 +89,23 @@ class Misc } foreach ($statement->expr as $expr) { - if ((empty($expr->column)) || (empty($expr->alias))) { + if ((!isset($expr->column)) || ($expr->column === '') + || (!isset($expr->alias)) || ($expr->alias === '') + ) { continue; } - $thisDb = empty($expr->database) ? $database : $expr->database; + $thisDb = ((isset($expr->database)) && ($expr->database !== '')) ? + $expr->database : $database; - if (empty($expr->table)) { - foreach ($retval[$thisDb]['tables'] as &$table) { - $table['columns'][$expr->column] = $expr->alias; - } - } else { + if ((isset($expr->table)) && ($expr->table !== '')) { $thisTable = isset($tables[$thisDb][$expr->table]) ? $tables[$thisDb][$expr->table] : $expr->table; $retval[$thisDb]['tables'][$thisTable]['columns'][$expr->column] = $expr->alias; + } else { + foreach ($retval[$thisDb]['tables'] as &$table) { + $table['columns'][$expr->column] = $expr->alias; + } } } diff --git a/libraries/sql-parser/src/Utils/Query.php b/libraries/sql-parser/src/Utils/Query.php index 5723ec6363..4325b6563b 100644 --- a/libraries/sql-parser/src/Utils/Query.php +++ b/libraries/sql-parser/src/Utils/Query.php @@ -372,7 +372,7 @@ class Query { $parser = new Parser($query); - if (!isset($parser->statements[0])) { + if (empty($parser->statements[0])) { return array(); } @@ -390,10 +390,12 @@ class Query // Finding tables' aliases and their associated real names. $tableAliases = array(); foreach ($statement->from as $expr) { - if ((!empty($expr->table)) && (!empty($expr->alias))) { + if ((isset($expr->table)) && ($expr->table !== '') + && (isset($expr->alias)) && ($expr->alias !== '') + ) { $tableAliases[$expr->alias] = array( $expr->table, - !empty($expr->database) ? $expr->database : null + isset($expr->database) ? $expr->database : null ); } } @@ -402,14 +404,15 @@ class Query // Sometimes, this is not possible because the tables aren't defined // explicitly (e.g. SELECT * FROM film, SELECT film_id FROM film). foreach ($statement->expr as $expr) { - if (!empty($expr->table)) { - if (empty($tableAliases[$expr->table])) { + if ((isset($expr->table)) && ($expr->table !== '')) { + if (isset($tableAliases[$expr->table])) { + $arr = $tableAliases[$expr->table]; + } else { $arr = array( $expr->table, - !empty($expr->database) ? $expr->database : null + ((isset($expr->database)) && ($expr->database !== '')) ? + $expr->database : null ); - } else { - $arr = $tableAliases[$expr->table]; } if (!in_array($arr, $ret['select_tables'])) { $ret['select_tables'][] = $arr; @@ -424,10 +427,11 @@ class Query // extracted from the FROM clause. if (empty($ret['select_tables'])) { foreach ($statement->from as $expr) { - if (!empty($expr->table)) { + if ((isset($expr->table)) && ($expr->table !== '')) { $arr = array( $expr->table, - !empty($expr->database) ? $expr->database : null + ((isset($expr->database)) && ($expr->database !== '')) ? + $expr->database : null ); if (!in_array($arr, $ret['select_tables'])) { $ret['select_tables'][] = $arr; @@ -607,7 +611,7 @@ class Query } if ($brackets == 0) { - // Checking if we changed sections. + // Checking if the section was changed. if (($token->type === Token::TYPE_KEYWORD) && (isset($clauses[$token->value])) && ($clauses[$token->value] >= $currIdx)