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 ('); |