From 672d7f6b63303543d1b664d5e533dceaae59f075 Mon Sep 17 00:00:00 2001 From: michael Date: Sat, 12 Nov 2011 13:05:15 +0000 Subject: [PATCH] * Implemented AS for table aliases git-svn-id: trunk@19631 - --- packages/fcl-db/src/sql/fpsqlparser.pas | 7 ++++++- packages/fcl-db/tests/tcparser.pas | 10 ++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/fcl-db/src/sql/fpsqlparser.pas b/packages/fcl-db/src/sql/fpsqlparser.pas index c81fbdf054..6c28b46d00 100644 --- a/packages/fcl-db/src/sql/fpsqlparser.pas +++ b/packages/fcl-db/src/sql/fpsqlparser.pas @@ -323,8 +323,13 @@ begin T.Params:=ParseValueList(AParent,[eoParamValue]); GetNextToken; end; - if (CurrentToken=tsqlIdentifier) then + if (CurrentToken in [tsqlIdentifier,tsqlAs]) then begin + if CurrentToken=tsqlAs then + begin + GetNextToken; + Expect(tsqlIdentifier); + end; T.AliasName:=CreateIdentifier(T,CurrentTokenString); GetNextToken; end; diff --git a/packages/fcl-db/tests/tcparser.pas b/packages/fcl-db/tests/tcparser.pas index 07a6be0956..2472d871aa 100644 --- a/packages/fcl-db/tests/tcparser.pas +++ b/packages/fcl-db/tests/tcparser.pas @@ -377,6 +377,7 @@ type procedure TestSelectAsteriskOneTable; procedure TestSelectDistinctAsteriskOneTable; procedure TestSelectOneFieldOneTableAlias; + procedure TestSelectOneFieldOneTableAsAlias; procedure TestSelectTwoFieldsTwoTables; procedure TestSelectTwoFieldsTwoTablesJoin; procedure TestSelectTwoFieldsTwoInnerTablesJoin; @@ -3680,6 +3681,15 @@ begin AssertTable(Select.Tables[0],'A'); end; +procedure TTestSelectParser.TestSelectOneFieldOneTableAsAlias; +begin + TestSelect('SELECT C.B FROM A AS C'); + AssertEquals('One field',1,Select.Fields.Count); + AssertField(Select.Fields[0],'C.B'); + AssertEquals('One table',1,Select.Tables.Count); + AssertTable(Select.Tables[0],'A'); +end; + procedure TTestSelectParser.TestSelectTwoFieldsTwoTables; begin TestSelect('SELECT B,C FROM A,D');