Browse Source

fixed orderBy + limit

Nicolas Cannasse 14 years ago
parent
commit
6e160f7778
1 changed files with 7 additions and 3 deletions
  1. 7 3
      std/neko/db/SpodData.hx

+ 7 - 3
std/neko/db/SpodData.hx

@@ -757,6 +757,7 @@ class SpodData {
 		var sql = makeString("",p);
 		var sql = makeString("",p);
 		switch( eopt.expr ) {
 		switch( eopt.expr ) {
 		case EObjectDecl(fields):
 		case EObjectDecl(fields):
+			var limit = null;
 			for( o in fields ) {
 			for( o in fields ) {
 				if( opts.exists(o.field) ) error("Duplicate option " + o.field, p);
 				if( opts.exists(o.field) ) error("Duplicate option " + o.field, p);
 				switch( o.field ) {
 				switch( o.field ) {
@@ -775,13 +776,16 @@ class SpodData {
 					var l0 = limits[0], l1 = limits[1];
 					var l0 = limits[0], l1 = limits[1];
 					unify(l0.t, DInt, l0.sql.pos);
 					unify(l0.t, DInt, l0.sql.pos);
 					if( l1 != null ) unify(l1.t, DInt, l1.sql.pos);
 					if( l1 != null ) unify(l1.t, DInt, l1.sql.pos);
-					sql = sqlAdd(sqlAddString(sql, " LIMIT "), l0.sql, p);
-					if( l1 != null )
-						sql = sqlAdd(sqlAddString(sql, ","), l1.sql, p);
+					limit = { l0 : l0, l1 : l1 };
 				default:
 				default:
 					error("Unknown option '" + o.field + "'", p);
 					error("Unknown option '" + o.field + "'", p);
 				}
 				}
 			}
 			}
+			if( limit != null ) {
+				sql = sqlAdd(sqlAddString(sql, " LIMIT "), limit.l0.sql, p);
+				if( limit.l1 != null )
+					sql = sqlAdd(sqlAddString(sql, ","), limit.l1.sql, p);
+			}
 		default:
 		default:
 			error("Options should be { orderBy : field, limit : [a,b] }", p);
 			error("Options should be { orderBy : field, limit : [a,b] }", p);
 		}
 		}