summaryrefslogtreecommitdiffstats
path: root/src/Utils/Misc.php
diff options
context:
space:
mode:
authorDan Ungureanu <udan1107@gmail.com>2015-07-10 16:54:28 +0300
committerDan Ungureanu <udan1107@gmail.com>2015-07-10 16:54:28 +0300
commit87cc627fdd144543bdac6264ec7c3dd5c3e824ab (patch)
treea0760fe475887b3ef817c8fabd55f2859fac54a3 /src/Utils/Misc.php
parent527842708bf44fe2bb4d17a97203cec01b860960 (diff)
downloadsql-parser-87cc627fdd144543bdac6264ec7c3dd5c3e824ab.zip
sql-parser-87cc627fdd144543bdac6264ec7c3dd5c3e824ab.tar.gz
sql-parser-87cc627fdd144543bdac6264ec7c3dd5c3e824ab.tar.bz2
Imporved JOIN parsing and building.
Some keywords may appear in conditions.
Diffstat (limited to 'src/Utils/Misc.php')
-rw-r--r--src/Utils/Misc.php35
1 files changed, 14 insertions, 21 deletions
diff --git a/src/Utils/Misc.php b/src/Utils/Misc.php
index e0fbb95..9d3dfa9 100644
--- a/src/Utils/Misc.php
+++ b/src/Utils/Misc.php
@@ -33,8 +33,8 @@ class Misc
public static function getAliases($statement, $database)
{
if (!($statement instanceof SelectStatement)
- || (empty($statement->from))
|| (empty($statement->expr))
+ || (empty($statement->from))
) {
return array();
}
@@ -43,28 +43,21 @@ class Misc
$tables = array();
- if ((!empty($statement->join->expr->table))
- && (!empty($statement->join->expr->alias))
- ) {
- $thisDb = empty($statement->join->expr->database) ?
- $database : $statement->join->expr->database;
-
- $retval = array(
- $thisDb => array(
- 'alias' => null,
- 'tables' => array(
- $statement->join->expr->table => array(
- 'alias' => $statement->join->expr->alias,
- 'columns' => array(),
- ),
- ),
- ),
- );
-
- $tables[$thisDb][$statement->join->expr->alias] = $statement->join->expr->table;
+ /**
+ * Expressions that may contain aliases.
+ * These are extracted from `FROM` and `JOIN` keywords.
+ * @var Expression[]
+ */
+ $expressions = $statement->from;
+
+ // Adding expressions from JOIN.
+ if (!empty($statement->join)) {
+ foreach ($statement->join as $join) {
+ $expressions[] = $join->expr;
+ }
}
- foreach ($statement->from as $expr) {
+ foreach ($expressions as $expr) {
if (empty($expr->table)) {
continue;
}