diff options
author | Dan Ungureanu <udan1107@gmail.com> | 2015-08-18 02:24:42 +0300 |
---|---|---|
committer | Dan Ungureanu <udan1107@gmail.com> | 2015-08-18 02:24:42 +0300 |
commit | 14c54da98c3b4f18c78ff44c22fbdd20e8ef6e18 (patch) | |
tree | a4604f6b1d1095790e313b71bf226e4291788ca8 /src/Components | |
parent | 1568adba1af7bf061354a30afd169e29fa43f133 (diff) | |
download | sql-parser-14c54da98c3b4f18c78ff44c22fbdd20e8ef6e18.zip sql-parser-14c54da98c3b4f18c78ff44c22fbdd20e8ef6e18.tar.gz sql-parser-14c54da98c3b4f18c78ff44c22fbdd20e8ef6e18.tar.bz2 |
Replaced explicit calls to Component::build() with implicit calls to Component::__toString().
Fixed bugs that caused field names like '0', '0.0', etc. to be considered invalid.
Refactoring.
Diffstat (limited to 'src/Components')
-rw-r--r-- | src/Components/AlterOperation.php | 7 | ||||
-rw-r--r-- | src/Components/ArrayObj.php | 19 | ||||
-rw-r--r-- | src/Components/Condition.php | 8 | ||||
-rw-r--r-- | src/Components/CreateDefinition.php | 16 | ||||
-rw-r--r-- | src/Components/DataType.php | 6 | ||||
-rw-r--r-- | src/Components/Expression.php | 38 | ||||
-rw-r--r-- | src/Components/FunctionCall.php | 2 | ||||
-rw-r--r-- | src/Components/IntoKeyword.php | 2 | ||||
-rw-r--r-- | src/Components/JoinKeyword.php | 4 | ||||
-rw-r--r-- | src/Components/Key.php | 5 | ||||
-rw-r--r-- | src/Components/OptionsArray.php | 7 | ||||
-rw-r--r-- | src/Components/OrderKeyword.php | 10 | ||||
-rw-r--r-- | src/Components/ParameterDefinition.php | 17 | ||||
-rw-r--r-- | src/Components/PartitionDefinition.php | 7 | ||||
-rw-r--r-- | src/Components/Reference.php | 2 | ||||
-rw-r--r-- | src/Components/RenameOperation.php | 9 | ||||
-rw-r--r-- | src/Components/SetOperation.php | 6 | ||||
-rw-r--r-- | src/Components/UnionKeyword.php | 6 |
18 files changed, 66 insertions, 105 deletions
diff --git a/src/Components/AlterOperation.php b/src/Components/AlterOperation.php index c99d391..348f81f 100644 --- a/src/Components/AlterOperation.php +++ b/src/Components/AlterOperation.php @@ -202,7 +202,6 @@ class AlterOperation extends Component __('Unrecognized alter operation.'), $list->tokens[$list->idx] ); - return null; } --$list->idx; @@ -216,9 +215,9 @@ class AlterOperation extends Component */ public static function build($component) { - $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/src/Components/ArrayObj.php b/src/Components/ArrayObj.php index 0e0b183..d3017fa 100644 --- a/src/Components/ArrayObj.php +++ b/src/Components/ArrayObj.php @@ -136,7 +136,6 @@ class ArrayObj extends Component break; } } - } return $ret; @@ -150,21 +149,11 @@ class ArrayObj extends Component public static function build($component) { 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/src/Components/Condition.php b/src/Components/Condition.php index 1f515dc..c8b4d1e 100644 --- a/src/Components/Condition.php +++ b/src/Components/Condition.php @@ -202,10 +202,10 @@ class Condition extends Component */ public static function build($component) { - $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/src/Components/CreateDefinition.php b/src/Components/CreateDefinition.php index 5671801..54c2475 100644 --- a/src/Components/CreateDefinition.php +++ b/src/Components/CreateDefinition.php @@ -278,11 +278,7 @@ class CreateDefinition extends Component public static function build($component) { 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 +286,23 @@ class CreateDefinition extends Component $tmp .= 'CONSTRAINT '; } - if (!empty($component->name)) { + if ((isset($component->name)) && ($component->name !== '')) { $tmp .= Context::escape($component->name) . ' '; } if (!empty($component->type)) { - $tmp .= DataType::build($component->type) . ' '; + $tmp .= $component->type . ' '; } 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/src/Components/DataType.php b/src/Components/DataType.php index 48ce5b7..8d42ea1 100644 --- a/src/Components/DataType.php +++ b/src/Components/DataType.php @@ -160,9 +160,7 @@ class DataType extends Component if (!empty($component->parameters)) { $tmp = '(' . implode(', ', $component->parameters) . ')'; } - return trim( - $component->name . $tmp . ' ' - . OptionsArray::build($component->options) - ); + + return trim($component->name . $tmp . ' ' . $component->options); } } diff --git a/src/Components/Expression.php b/src/Components/Expression.php index 11e7132..ad4d5e8 100644 --- a/src/Components/Expression.php +++ b/src/Components/Expression.php @@ -350,32 +350,36 @@ class Expression extends Component } /** - * @param Expression $component The component to be built. + * @param Expression|Expression[] $component The component to be built. * * @return string */ public static function build($component) { - 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->table)) { - $fields[] = $component->table; + 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->column)) { - $fields[] = $component->column; + + if (!empty($component->alias)) { + $ret .= ' AS ' . Context::escape($component->alias); } - $ret = implode('.', Context::escape($fields)); - } - if (!empty($component->alias)) { - $ret .= ' AS ' . Context::escape($component->alias); + return $ret; } - - return $ret; } } diff --git a/src/Components/FunctionCall.php b/src/Components/FunctionCall.php index 43eb082..55d9e2c 100644 --- a/src/Components/FunctionCall.php +++ b/src/Components/FunctionCall.php @@ -120,6 +120,6 @@ class FunctionCall extends Component */ public static function build($component) { - return $component->name . ArrayObj::build($component->parameters); + return $component->name . $component->parameters; } } diff --git a/src/Components/IntoKeyword.php b/src/Components/IntoKeyword.php index 5e4afcb..05540e6 100644 --- a/src/Components/IntoKeyword.php +++ b/src/Components/IntoKeyword.php @@ -141,7 +141,7 @@ class IntoKeyword extends Component 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/src/Components/JoinKeyword.php b/src/Components/JoinKeyword.php index 237022a..b95912e 100644 --- a/src/Components/JoinKeyword.php +++ b/src/Components/JoinKeyword.php @@ -158,8 +158,8 @@ class JoinKeyword extends Component { $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/src/Components/Key.php b/src/Components/Key.php index 1364a8c..ef5d3a8 100644 --- a/src/Components/Key.php +++ b/src/Components/Key.php @@ -145,7 +145,6 @@ class Key extends Component ++$list->idx; break; } - } --$list->idx; @@ -163,8 +162,8 @@ class Key extends Component 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/src/Components/OptionsArray.php b/src/Components/OptionsArray.php index 6b43844..a496273 100644 --- a/src/Components/OptionsArray.php +++ b/src/Components/OptionsArray.php @@ -256,9 +256,10 @@ class OptionsArray extends Component */ public static function build($component) { - 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 +267,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/src/Components/OrderKeyword.php b/src/Components/OrderKeyword.php index 81bff2f..b6918e9 100644 --- a/src/Components/OrderKeyword.php +++ b/src/Components/OrderKeyword.php @@ -126,20 +126,16 @@ class OrderKeyword extends Component } /** - * @param OrderKeyword $component The component to be built. + * @param OrderKeyword|OrderKeyword[] $component The component to be built. * * @return string */ public static function build($component) { 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/src/Components/ParameterDefinition.php b/src/Components/ParameterDefinition.php index 79b4845..d24aefc 100644 --- a/src/Components/ParameterDefinition.php +++ b/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; } @@ -145,18 +145,17 @@ class ParameterDefinition extends Component */ public static function build($component) { - $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/src/Components/PartitionDefinition.php b/src/Components/PartitionDefinition.php index df6d3f6..ad31176 100644 --- a/src/Components/PartitionDefinition.php +++ b/src/Components/PartitionDefinition.php @@ -198,11 +198,7 @@ class PartitionDefinition extends Component public static function build($component) { 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 +209,6 @@ class PartitionDefinition extends Component . ' VALUES ' . $component->type . ' ' . $component->expr . $subpartitions; } - } } } diff --git a/src/Components/Reference.php b/src/Components/Reference.php index 36d3971..3515791 100644 --- a/src/Components/Reference.php +++ b/src/Components/Reference.php @@ -145,7 +145,7 @@ class Reference extends Component return trim( Context::escape($component->table) . ' (' . implode(', ', Context::escape($component->columns)) . ') ' - . OptionsArray::build($component->options) + . $component->options ); } } diff --git a/src/Components/RenameOperation.php b/src/Components/RenameOperation.php index 34c62bb..b8b1691 100644 --- a/src/Components/RenameOperation.php +++ b/src/Components/RenameOperation.php @@ -168,14 +168,9 @@ class RenameOperation extends Component public static function build($component) { 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/src/Components/SetOperation.php b/src/Components/SetOperation.php index 8b6af87..d272cab 100644 --- a/src/Components/SetOperation.php +++ b/src/Components/SetOperation.php @@ -128,11 +128,7 @@ class SetOperation extends Component public static function build($component) { 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/src/Components/UnionKeyword.php b/src/Components/UnionKeyword.php index cbdb529..8cf8a9f 100644 --- a/src/Components/UnionKeyword.php +++ b/src/Components/UnionKeyword.php @@ -30,10 +30,6 @@ class UnionKeyword extends Component */ public static function build($component) { - $ret = array(); - foreach ($component as $c) { - $ret[] = $c->build(); - } - return implode(" UNION ", $ret); + return implode(' UNION ', $component); } } |