cvs: pear /SQL_Parser Parser.php
| From: | Brent Cook | Date: | Fri, 06 Dec 2002 04:00:16 +0000 |
| Subject: | cvs: pear /SQL_Parser Parser.php | ||
| Groups: | php.pear.cvs | ||
| Request: | Send a blank email to pear-cvs+get-7753@lists.php.net to get a copy of this message | ||
busterb Thu Dec 5 23:00:16 2002 EDT
Modified files:
/pear/SQL_Parser Parser.php
Log:
added support for column and table aliases (thanks to Lauren Matheson)
Index: pear/SQL_Parser/Parser.php
diff -u pear/SQL_Parser/Parser.php:1.2 pear/SQL_Parser/Parser.php:1.3
--- pear/SQL_Parser/Parser.php:1.2 Tue Oct 22 21:41:14 2002
+++ pear/SQL_Parser/Parser.php Thu Dec 5 23:00:15 2002
@@ -18,7 +18,7 @@
// | Foundation, Inc., 59 Temple Place, Suite 330,Boston,MA 02111-1307 USA|
// +----------------------------------------------------------------------+
//
-// $Id: Parser.php,v 1.2 2002/10/23 01:41:14 busterb Exp $
+// $Id: Parser.php,v 1.3 2002/12/06 04:00:15 busterb Exp $
//
require_once 'PEAR.php';
@@ -714,8 +714,41 @@
$this->getTok();
} elseif ($this->token == 'ident') {
while ($this->token == 'ident') {
- $tree['column_names'][] = $this->lexer->tokText;
+ $prevToken = $this->token;
+ $prevTokText = $this->lexer->tokText;
$this->getTok();
+ if ($this->token == '.') {
+ $columnTable = $prevTokText;
+ $this->getTok();
+ $prevTok = $this->token;
+ $prevTokText = $this->lexer->tokText;
+ } else {
+ $columnTable = '';
+ }
+
+ if ($prevTok == 'ident') {
+ $columnName = $prevTokText;
+ } else {
+ return $this->raiseError('Expected column name');
+ }
+
+ if ($this->token == 'as') {
+ $this->getTok();
+ if ($this->token == 'ident' ) {
+ $columnAlias = $this->lexer->tokText;
+ } else {
+ return $this->raiseError('Expected column alias');
+ }
+ } else {
+ $columnAlias = '';
+ }
+
+ $tree['column_tables'][] = $columnTable;
+ $tree['column_names'][] = $columnName;
+ $tree['column_aliases'][] = $columnAlias;
+ if ($this->token != 'from') {
+ $this->getTok();
+ }
if ($this->token == ',') {
$this->getTok();
}
@@ -742,6 +775,17 @@
while ($this->token == 'ident') {
$tree['table_names'][] = $this->lexer->tokText;
$this->getTok();
+ if ($this->token == 'as') {
+ $this->getTok();
+ if ($this->token == 'ident') {
+ $tree['table_aliases'][] = $this->lexer->tokText;
+ } else {
+ return $this->raiseError('Expected table alias');
+ }
+ $this->getTok();
+ } else {
+ $tree['table_aliases'][] = '';
+ }
if ($this->token == ',') {
$this->getTok();
} elseif (($this->token == 'where') ||