Update of /cvsroot/modeling/ProjectModeling/Modeling/DatabaseAdaptors/OracleAdaptorLayer
In directory sc8-pr-cvs1:/tmp/cvs-serv10442/Modeling/DatabaseAdaptors/OracleAdaptorLayer
Modified Files:
OracleSQLExpression.py
Log Message:
Fixed bug #857803: mysql: invalid generated sql for complex qualifiers
Index: OracleSQLExpression.py
===================================================================
RCS file: /cvsroot/modeling/ProjectModeling/Modeling/DatabaseAdaptors/OracleAdaptorLayer/OracleSQLExpression.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** OracleSQLExpression.py 31 Aug 2003 15:02:51 -0000 1.2
--- OracleSQLExpression.py 15 Dec 2003 15:05:00 -0000 1.3
***************
*** 51,106 ****
"""
- def _addTableJoinsForAlias(self, alias, str):
- """
- Changes the default way the Modeling.SQLExpression calculates SQL
- statements for JOIN.
-
- It depends on the version of Oracle used there.
-
- For Oracle 8i, we return the ANSI equivalent of 'INNER JOIN', which o8i
- does not support.
-
- For Oracle 9i, we return the default, as built by Modeling.SQLExpression::
-
- table0 alias0 INNER JOIN [ (some other nested join) | table1 alias1 ]
- ON (join condition)
-
- """
- if oracle_server_version()=='9i':
- return SQLExpression._addTableJoinsForAlias(self, alias, str)
-
- # 8i
- relPaths=self._internals.relPathsComingFromAlias(alias)
- aliases=map(lambda rp, self=self: self._internals.aliasForRelPath(rp),
- relPaths)
-
- str+=self._internals.entityExternalNameForAlias(alias)+' '+alias
-
- processedAliases_total=[]
- for boundAlias in aliases:
- currentRelPath=self._internals.relPathForAlias(boundAlias)
- trace('relPath for bound alias: %s'%(currentRelPath))
-
-
- srcKeys=self._internals.sourceKeysForRelPath(currentRelPath)
- dstKeys=self._internals.destinationKeysForRelPath(currentRelPath)
- joinClause=''
- for idx in range(len(srcKeys)):
- joinClause+='%s.%s=%s.%s AND '%(alias, srcKeys[idx], boundAlias, dstKeys[idx])
- joinClause=joinClause[:-5]
- if self._joinClauseString:
- self._joinClauseString+=' AND '+joinClause
- else:
- self._joinClauseString=joinClause
-
- str2, processedAliases=self._addTableJoinsForAlias(boundAlias, '')
- str+=', '+str2
- processedAliases_total.extend(processedAliases)
-
- aliases.extend(processedAliases_total)
- aliases.append(alias)
-
- return (str, aliases)
-
def columnTypeStringForAttribute(self, attribute):
"""
--- 51,54 ----
***************
*** 204,205 ****
--- 152,159 ----
return values
+
+
+ if oracle_server_version()=='9i':
+ OracleSQLExpression.SQL92_join=1
+ else:
+ OracleSQLExpression.SQL92_join=0
|