Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/dialect In directory sc8-pr-cvs1:/tmp/cvs-serv15675/dialect Modified Files: Dialect.java HSQLDialect.java MySQLDialect.java Oracle9Dialect.java PostgreSQLDialect.java TypeNames.java Log Message: code cleanups for paged queries + paged queries for HSQL Index: Dialect.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/dialect/Dialect.java,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** Dialect.java 3 May 2003 07:20:49 -0000 1.13 --- Dialect.java 3 May 2003 09:05:44 -0000 1.14 *************** *** 347,358 **** } public boolean supportsPagingSelect() { return false; } ! public String getPagingSelect(String querySelect) { throw new UnsupportedOperationException("paged queries not supported"); } public boolean reversePagingSelectOrder() { return false; --- 347,370 ---- } + /** + * Does this <tt>Dialect</tt> have some kind of <tt>LIMIT</tt> syntax? + */ public boolean supportsPagingSelect() { return false; } ! ! /** ! * Add a <tt>LIMIT</tt> clause to the given SQL <tt>SELECT</tt> ! * @return the modified SQL ! */ public String getPagingSelect(String querySelect) { throw new UnsupportedOperationException("paged queries not supported"); } + /** + * Does the <tt>LIMIT</tt> clause specify arguments in the "reverse" order + * limit, offset instead of offset, limit? + * @return true if the correct order is limit, offset + */ public boolean reversePagingSelectOrder() { return false; Index: HSQLDialect.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/dialect/HSQLDialect.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** HSQLDialect.java 25 Apr 2003 03:40:32 -0000 1.7 --- HSQLDialect.java 3 May 2003 09:05:44 -0000 1.8 *************** *** 35,39 **** register( Types.NUMERIC, "NUMERIC" ); ! getDefaultProperties().setProperty(Environment.USE_OUTER_JOIN, "false"); getDefaultProperties().setProperty(Environment.STATEMENT_BATCH_SIZE, NO_BATCH); } --- 35,39 ---- register( Types.NUMERIC, "NUMERIC" ); ! getDefaultProperties().setProperty(Environment.USE_OUTER_JOIN, "false"); //HSQL has outer joins but not for composite keys! getDefaultProperties().setProperty(Environment.STATEMENT_BATCH_SIZE, NO_BATCH); } *************** *** 72,75 **** --- 72,85 ---- } + public boolean supportsPagingSelect() { + return true; + } + + public String getPagingSelect(String sql) { + StringBuffer pagingSelect = new StringBuffer(100); + pagingSelect.append(sql); + pagingSelect.insert(6, " limit ? ?"); + return pagingSelect.toString(); + } } Index: MySQLDialect.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/dialect/MySQLDialect.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** MySQLDialect.java 3 May 2003 07:20:49 -0000 1.8 --- MySQLDialect.java 3 May 2003 09:05:44 -0000 1.9 *************** *** 88,99 **** public String getPagingSelect(String sql) { ! StringBuffer pagingSelect = new StringBuffer(); pagingSelect.append(sql); pagingSelect.append(" limit ?, ?"); return pagingSelect.toString(); - } - - public boolean reversePagingSelectOrder() { - return false; } --- 88,95 ---- public String getPagingSelect(String sql) { ! StringBuffer pagingSelect = new StringBuffer(100); pagingSelect.append(sql); pagingSelect.append(" limit ?, ?"); return pagingSelect.toString(); } Index: Oracle9Dialect.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/dialect/Oracle9Dialect.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Oracle9Dialect.java 3 May 2003 07:20:49 -0000 1.4 --- Oracle9Dialect.java 3 May 2003 09:05:44 -0000 1.5 *************** *** 67,71 **** public String getPagingSelect(String sql) { ! StringBuffer pagingSelect = new StringBuffer(); pagingSelect.append("select * from ( select a.*, rownum rnum from ( "); pagingSelect.append(sql); --- 67,71 ---- public String getPagingSelect(String sql) { ! StringBuffer pagingSelect = new StringBuffer(100); pagingSelect.append("select * from ( select a.*, rownum rnum from ( "); pagingSelect.append(sql); Index: PostgreSQLDialect.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/dialect/PostgreSQLDialect.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** PostgreSQLDialect.java 3 May 2003 07:20:49 -0000 1.10 --- PostgreSQLDialect.java 3 May 2003 09:05:45 -0000 1.11 *************** *** 64,68 **** public String getPagingSelect(String sql) { ! StringBuffer pagingSelect = new StringBuffer(); pagingSelect.append(sql); pagingSelect.append(" limit ?, ?"); --- 64,68 ---- public String getPagingSelect(String sql) { ! StringBuffer pagingSelect = new StringBuffer(100); pagingSelect.append(sql); pagingSelect.append(" limit ?, ?"); Index: TypeNames.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/dialect/TypeNames.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** TypeNames.java 5 Jan 2003 02:11:20 -0000 1.3 --- TypeNames.java 3 May 2003 09:05:45 -0000 1.4 *************** *** 7,10 **** --- 7,11 ---- import java.util.Iterator; + import net.sf.hibernate.MappingException; import net.sf.hibernate.util.StringHelper; *************** *** 61,66 **** * @return the default type name associated with specified key */ ! public String get(int typecode) { ! return (String) defaults.get( new Integer(typecode) ); } --- 62,69 ---- * @return the default type name associated with specified key */ ! public String get(int typecode) throws MappingException { ! String result = (String) defaults.get( new Integer(typecode) ); ! if (result==null) throw new MappingException("No Dialect mapping for JDBC type: " + typecode); ! return result; } *************** *** 72,76 **** * if available and the default type name otherwise */ ! public String get(int typecode, int size) { Map map = (Map) weighted.get( new Integer(typecode) ); if (map != null && map.size() > 0) { --- 75,79 ---- * if available and the default type name otherwise */ ! public String get(int typecode, int size) throws MappingException { Map map = (Map) weighted.get( new Integer(typecode) ); if (map != null && map.size() > 0) { |