Browse Source

turn optional lock from null to false (close #2208)

Nicolas Cannasse 12 years ago
parent
commit
90f0c71fed
1 changed files with 9 additions and 1 deletions
  1. 9 1
      std/sys/db/RecordMacros.hx

+ 9 - 1
std/sys/db/RecordMacros.hx

@@ -1109,6 +1109,7 @@ class RecordMacros {
 		var pos = Context.currentPos();
 		var inst = getManagerInfos(Context.typeof(em),pos);
 		econd = inst.checkKeys(econd);
+		elock = defaultFalse(elock);
 		switch( econd.expr ) {
 		case EObjectDecl(_):
 			return { expr : ECall({ expr : EField(em,"unsafeGetWithKeys"), pos : pos },[econd,elock]), pos : pos };
@@ -1116,6 +1117,13 @@ class RecordMacros {
 			return { expr : ECall({ expr : EField(em,"unsafeGet"), pos : pos },[econd,elock]), pos : pos };
 		}
 	}
+	
+	static function defaultFalse( e : Expr ) {
+		return switch( e.expr ) {
+		case EConst(CIdent("null")): { expr : EConst(CIdent("false")), pos : e.pos };
+		default: e;
+		}
+	}
 
 	public static function macroSearch( em : Expr, econd : Expr, eopt : Expr, elock : Expr, ?single ) {
 		// allow both search(e,opts) and search(e,lock)
@@ -1130,7 +1138,7 @@ class RecordMacros {
 		}
 		var sql = buildSQL(em, econd, "SELECT * FROM", eopt);
 		var pos = Context.currentPos();
-		var e = { expr : ECall( { expr : EField(em, "unsafeObjects"), pos : pos }, [sql,elock]), pos : pos };
+		var e = { expr : ECall( { expr : EField(em, "unsafeObjects"), pos : pos }, [sql,defaultFalse(elock)]), pos : pos };
 		if( single )
 			e = { expr : ECall( { expr : EField(e, "first"), pos : pos }, []), pos : pos };
 		return e;