summaryrefslogtreecommitdiffstats
path: root/src/Components
diff options
context:
space:
mode:
authorDan Ungureanu <udan1107@gmail.com>2015-08-18 02:24:42 +0300
committerDan Ungureanu <udan1107@gmail.com>2015-08-18 02:24:42 +0300
commit14c54da98c3b4f18c78ff44c22fbdd20e8ef6e18 (patch)
treea4604f6b1d1095790e313b71bf226e4291788ca8 /src/Components
parent1568adba1af7bf061354a30afd169e29fa43f133 (diff)
downloadsql-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.php7
-rw-r--r--src/Components/ArrayObj.php19
-rw-r--r--src/Components/Condition.php8
-rw-r--r--src/Components/CreateDefinition.php16
-rw-r--r--src/Components/DataType.php6
-rw-r--r--src/Components/Expression.php38
-rw-r--r--src/Components/FunctionCall.php2
-rw-r--r--src/Components/IntoKeyword.php2
-rw-r--r--src/Components/JoinKeyword.php4
-rw-r--r--src/Components/Key.php5
-rw-r--r--src/Components/OptionsArray.php7
-rw-r--r--src/Components/OrderKeyword.php10
-rw-r--r--src/Components/ParameterDefinition.php17
-rw-r--r--src/Components/PartitionDefinition.php7
-rw-r--r--src/Components/Reference.php2
-rw-r--r--src/Components/RenameOperation.php9
-rw-r--r--src/Components/SetOperation.php6
-rw-r--r--src/Components/UnionKeyword.php6
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);
}
}