|
From: <car...@us...> - 2008-09-03 10:42:57
|
Revision: 788
http://instantobjects.svn.sourceforge.net/instantobjects/revision/?rev=788&view=rev
Author: carlobar
Date: 2008-09-03 10:43:07 +0000 (Wed, 03 Sep 2008)
Log Message:
-----------
Fixed a bug for EXISTS/USING clause of IQL when a broker uses quoted identifiers.
Modified Paths:
--------------
trunk/Source/Core/InstantBrokers.pas
trunk/Source/Core/InstantCommand.pas
Modified: trunk/Source/Core/InstantBrokers.pas
===================================================================
--- trunk/Source/Core/InstantBrokers.pas 2008-09-02 14:00:30 UTC (rev 787)
+++ trunk/Source/Core/InstantBrokers.pas 2008-09-03 10:43:07 UTC (rev 788)
@@ -847,6 +847,7 @@
function IndexOfChildContext(const AChildContext: TInstantTranslationContext): Integer;
function Qualify(const TablePath, FieldName: string): string;
function QualifyPath(const PathText: string): string;
+ function QualifyClassPath(const PathText: string): string;
function WriteCriterias(Writer: TInstantIQLWriter; IncludeWhere: Boolean): Boolean;
procedure WriteTables(Writer: TInstantIQLWriter);
@@ -6484,6 +6485,14 @@
Result := Qualify(TablePath, FieldName);
end;
+function TInstantTranslationContext.QualifyClassPath(const PathText: string): string;
+var
+ TablePath, FieldName: string;
+begin
+ PathToTarget(PathText, TablePath, FieldName);
+ Result := Qualify(TablePath, FieldName+InstantClassFieldName);
+end;
+
function TInstantTranslationContext.QuoteString(const Str: string): string;
begin
Result := InstantQuote(Str, Quote);
Modified: trunk/Source/Core/InstantCommand.pas
===================================================================
--- trunk/Source/Core/InstantCommand.pas 2008-09-02 14:00:30 UTC (rev 787)
+++ trunk/Source/Core/InstantCommand.pas 2008-09-03 10:43:07 UTC (rev 788)
@@ -1991,8 +1991,9 @@
WriteString('((');
- WriteString(LSubContext.QualifyPath(LAttributeMetadata.FieldName ) + InstantClassFieldName +
- ' = ' + InstantQuote(LParentContext.ClassRef.ObjectClassName, LParentContext.Quote));
+ WriteString( LSubContext.QualifyClassPath(LAttributeMetadata.FieldName));
+ WriteString(' = ');
+ WriteString(InstantQuote(LParentContext.ClassRef.ObjectClassName, LParentContext.Quote));
WriteString(') AND (');
|