|
From: <one...@us...> - 2002-11-14 11:28:59
|
Update of /cvsroot/hibernate/Hibernate/cirrus/hibernate/query
In directory usw-pr-cvs1:/tmp/cvs-serv27942/hibernate/query
Modified Files:
QueryTranslator.java WhereParser.java
Log Message:
undeprecated update()
fixed BAD bug in generated SQL from some queries
support multi-argument SQL functions
Index: QueryTranslator.java
===================================================================
RCS file: /cvsroot/hibernate/Hibernate/cirrus/hibernate/query/QueryTranslator.java,v
retrieving revision 1.42
retrieving revision 1.43
diff -C2 -d -r1.42 -r1.43
*** QueryTranslator.java 5 Nov 2002 15:24:36 -0000 1.42
--- QueryTranslator.java 14 Nov 2002 11:28:55 -0000 1.43
***************
*** 561,566 ****
if ( hasPart1 && hasPart2 ) buf.append(" AND ");
if ( hasPart2 ) buf.append(part2);
! if ( hasPart3 && ( hasPart1 || hasPart2 ) ) buf.append(" AND ");
! if ( hasPart3 ) buf.append(part3);
if ( groupByTokens.size()!=0 ) {
--- 561,569 ----
if ( hasPart1 && hasPart2 ) buf.append(" AND ");
if ( hasPart2 ) buf.append(part2);
! if ( hasPart3 ) {
! if ( hasPart1 || hasPart2 ) buf.append(" AND (");
! buf.append(part3);
! if ( hasPart1 || hasPart2 ) buf.append(')');
! }
if ( groupByTokens.size()!=0 ) {
Index: WhereParser.java
===================================================================
RCS file: /cvsroot/hibernate/Hibernate/cirrus/hibernate/query/WhereParser.java,v
retrieving revision 1.36
retrieving revision 1.37
diff -C2 -d -r1.36 -r1.37
*** WhereParser.java 28 Oct 2002 15:41:53 -0000 1.36
--- WhereParser.java 14 Nov 2002 11:28:55 -0000 1.37
***************
*** 44,53 ****
expressionTerminators.add("and");
expressionTerminators.add("or");
! expressionTerminators.add(","); //TODO: is this needed????
expressionTerminators.add(")");
expressionOpeners.add("and");
expressionOpeners.add("or");
! expressionOpeners.add(","); //TODO: is this needed????
expressionOpeners.add("(");
--- 44,53 ----
expressionTerminators.add("and");
expressionTerminators.add("or");
! //expressionTerminators.add(","); //TODO: is this needed????
expressionTerminators.add(")");
expressionOpeners.add("and");
expressionOpeners.add("or");
! //expressionOpeners.add(","); //TODO: is this needed????
expressionOpeners.add("(");
***************
*** 93,97 ****
private boolean betweenSpecialCase = false; //Inside a BETWEEN ... AND ... expression
private boolean isSpecialCase = false; //Inside an IS NULL or IS NOT NULL expression
! private boolean functionSpecialCase = false; //Inside an IN (...,...) expression TODO: is this special case needed now?????
private int bracketsSinceFunction = 0; //How deep inside in IN are we?
--- 93,97 ----
private boolean betweenSpecialCase = false; //Inside a BETWEEN ... AND ... expression
private boolean isSpecialCase = false; //Inside an IS NULL or IS NOT NULL expression
! //private boolean functionSpecialCase = false; //Inside an IN (...,...) expression TODO: is this special case needed now?????
private int bracketsSinceFunction = 0; //How deep inside in IN are we?
***************
*** 223,227 ****
//Close extra brackets we opened
! if ( !functionSpecialCase && !betweenSpecialCase && expressionTerminators.contains(lcToken) ) {
closeExpression(q, lcToken);
}
--- 223,227 ----
//Close extra brackets we opened
! if ( /*!functionSpecialCase &&*/ !betweenSpecialCase && expressionTerminators.contains(lcToken) ) {
closeExpression(q, lcToken);
}
***************
*** 240,244 ****
//Open any extra brackets we might need.
! if ( !functionSpecialCase && !betweenSpecialCase && expressionOpeners.contains(lcToken) ) {
openExpression(q, lcToken);
}
--- 240,244 ----
//Open any extra brackets we might need.
! if ( /*!functionSpecialCase &&*/ !betweenSpecialCase && expressionOpeners.contains(lcToken) ) {
openExpression(q, lcToken);
}
***************
*** 322,326 ****
q.addIdentifierSpace( pathExpressionParser.getCollectionTable() );
closeExpression(q, "");
! if (functionSpecialCase && bracketsSinceFunction==0) functionSpecialCase=false;
}
else {
--- 322,326 ----
q.addIdentifierSpace( pathExpressionParser.getCollectionTable() );
closeExpression(q, "");
! //if (functionSpecialCase && bracketsSinceFunction==0) functionSpecialCase=false;
}
else {
***************
*** 382,391 ****
isSpecialCase = true;
}
! else if ( functions.contains(lcToken) ) {
functionSpecialCase = true;
}
else if ( functionSpecialCase && lcToken.equals("(") ) {
bracketsSinceFunction++;
! }
}
--- 382,391 ----
isSpecialCase = true;
}
! /*else if ( functions.contains(lcToken) ) {
functionSpecialCase = true;
}
else if ( functionSpecialCase && lcToken.equals("(") ) {
bracketsSinceFunction++;
! }*/
}
***************
*** 397,405 ****
isSpecialCase = false;
}
! else if ( functionSpecialCase && lcToken.equals(")") ) {
if ( --bracketsSinceFunction == 0 ) {
functionSpecialCase = false;
}
! }
}
--- 397,405 ----
isSpecialCase = false;
}
! /*else if ( functionSpecialCase && lcToken.equals(")") ) {
if ( --bracketsSinceFunction == 0 ) {
functionSpecialCase = false;
}
! }*/
}
|