Changeset: f7b52a192588 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f7b52a192588
Modified Files:
sql/backends/monet5/sql.mx
sql/backends/monet5/sql_scenario.c
Branch: Dec2011
Log Message:
Add more error codes and make sure that sql.assert doesn't add superfluous code.
diffs (215 lines):
diff --git a/sql/backends/monet5/sql.mx b/sql/backends/monet5/sql.mx
--- a/sql/backends/monet5/sql.mx
+++ b/sql/backends/monet5/sql.mx
@@ -4542,7 +4542,7 @@ SQLstr_cast_(str *res, mvc *m, int eclas
if (r)
GDKfree(r);
if (ATOMcmp(TYPE_str, ATOMnilptr(TYPE_str), p) != 0) {
- throw(SQL, "str_cast", "value too long for type
(var)char(%d)", len);
+ throw(SQL, "str_cast", "22001!value too long for type
(var)char(%d)", len);
} else {
r = GDKstrdup(str_nil);
}
@@ -4707,7 +4707,7 @@ str @2_2_@1( @1 *res, @2 *v )
return(MAL_SUCCEED);
} else {
throw(SQL, "convert",
- "value (" @4 ") exceeds limits of type @1", val);
+ "22003!value (" @4 ") exceeds limits of type @1", val);
}
}
@@ -4741,7 +4741,7 @@ str bat@2_2_@1( int *res, int *bid )
if ((@3)(@1)val > (@3) GDK_@1_min && val > (@3)
GDK_@1_min && val <= (@3) GDK_@1_max) {
*o = (@1)val;
} else {
- msg= createException(SQL, "convert", "value ("
@4 ") exceeds limits of type @1", val);
+ msg= createException(SQL, "convert",
"22003!value (" @4 ") exceeds limits of type @1", val);
break;
}
}
@@ -4756,7 +4756,7 @@ str bat@2_2_@1( int *res, int *bid )
if ((@3)(@1)val > (@3) GDK_@1_min && val > (@3)
GDK_@1_min && val <= (@3) GDK_@1_max) {
*o = (@1)val;
} else {
- msg= createException(SQL, "convert",
"value (" @4 ") exceeds limits of type @1", val);
+ msg= createException(SQL, "convert",
"22003!value (" @4 ") exceeds limits of type @1", val);
break;
}
}
@@ -4830,7 +4830,7 @@ str
inlen += (s2-s1);
if (p && inlen > p) {
throw(SQL, "convert",
- "too many digits (%d > %d)", inlen, p);
+ "22003!too many digits (%d > %d)", inlen, p);
}
/* since the @1 type is bigger than or equal to the @2 type, it will
@@ -5026,7 +5026,7 @@ str
/* rounding is allowed */
if (p && inlen > p) {
throw(SQL, "convert",
- "too many digits (%d > %d)", inlen, p);
+ "22003!too many digits (%d > %d)", inlen, p);
}
*res = (@1) r;
return MAL_SUCCEED;
@@ -5122,7 +5122,7 @@ str
inlen += (s2-s1);
if (p && inlen > p) {
throw(SQL, "convert",
- "too many digits (%d > %d)", inlen, p);
+ "22003!too many digits (%d > %d)", inlen, p);
}
/* since the @1 type is bigger than or equal to the @2 type, it will
@@ -5299,7 +5299,7 @@ str
return MAL_SUCCEED;
} else {
throw(SQL, "convert",
- "value (" LLFMT ") exceeds limits of type @1", val);
+ "22003!value (" LLFMT ") exceeds limits of type @1",
val);
}
}
@@ -5323,7 +5323,7 @@ str
inlen += (s2-s1);
if (p && inlen > p) {
throw(SQL, "@2_2_@1",
- "too many digits (%d > %d)", inlen, p);
+ "22003!too many digits (%d > %d)", inlen, p);
}
if(s2 > s1)
@@ -5337,7 +5337,7 @@ str
return MAL_SUCCEED;
} else {
throw(SQL, "convert",
- "value (" LLFMT ") exceeds limits of type @1", val);
+ "22003!value (" LLFMT ") exceeds limits of type @1",
val);
}
}
@@ -5385,7 +5385,7 @@ str bat@2_dec2_@1( int *res, int *s1, in
BATaccessEnd(b, USE_TAIL, MMAP_SEQUENTIAL);
BBPreleaseref(b->batCacheid);
BBPreleaseref(bn->batCacheid);
- throw(SQL, "convert", "value (" LLFMT ")
exceeds limits of type @1", (lng) val);
+ throw(SQL, "convert", "22003!value (" LLFMT ")
exceeds limits of type @1", (lng) val);
}
}
} else{
@@ -5405,7 +5405,7 @@ str bat@2_dec2_@1( int *res, int *s1, in
BATaccessEnd(b, USE_TAIL,
MMAP_SEQUENTIAL);
BBPreleaseref(b->batCacheid);
BBPreleaseref(bn->batCacheid);
- throw(SQL, "convert", "value (" LLFMT
") exceeds limits of type @1", (lng) val);
+ throw(SQL, "convert", "22003!value ("
LLFMT ") exceeds limits of type @1", (lng) val);
}
}
}
diff --git a/sql/backends/monet5/sql_scenario.c
b/sql/backends/monet5/sql_scenario.c
--- a/sql/backends/monet5/sql_scenario.c
+++ b/sql/backends/monet5/sql_scenario.c
@@ -341,7 +341,7 @@ error(stream *out, char *str)
return 0;
}
-#define TRANS_ABORTED "!25005:current transaction is aborted (please
ROLLBACK)\n"
+#define TRANS_ABORTED "!25005!current transaction is aborted (please
ROLLBACK)\n"
static int
handle_error(mvc *m, stream *out, int pstatus)
@@ -1762,8 +1762,21 @@ SQLassert(Client cntxt, MalBlkPtr mb, Ma
(void) cntxt;
(void)mb;
if (*flg){
+ const char *sqlstate = "M0M29!";
/* mdbDump(mb,stk,pci);*/
- throw(SQL, "assert", "M0M29!%s", *msg);
+ if (strlen(*msg) > 6 && (*msg)[5] == '!' &&
+ (('0' <= (*msg)[0] && (*msg)[0] <= '9') ||
+ ('A' <= (*msg)[0] && (*msg)[0] <= 'Z')) &&
+ (('0' <= (*msg)[1] && (*msg)[1] <= '9') ||
+ ('A' <= (*msg)[1] && (*msg)[1] <= 'Z')) &&
+ (('0' <= (*msg)[2] && (*msg)[2] <= '9') ||
+ ('A' <= (*msg)[2] && (*msg)[2] <= 'Z')) &&
+ (('0' <= (*msg)[3] && (*msg)[3] <= '9') ||
+ ('A' <= (*msg)[3] && (*msg)[3] <= 'Z')) &&
+ (('0' <= (*msg)[4] && (*msg)[4] <= '9') ||
+ ('A' <= (*msg)[4] && (*msg)[4] <= 'Z')))
+ sqlstate = "";
+ throw(SQL, "assert", "%s%s", sqlstate, *msg);
}
return MAL_SUCCEED;
}
@@ -1775,8 +1788,21 @@ SQLassertInt(Client cntxt, MalBlkPtr mb,
(void) cntxt;
(void)mb;
if (*flg){
+ const char *sqlstate = "M0M29!";
/* mdbDump(mb,stk,pci);*/
- throw(SQL, "assert", "M0M29!%s", *msg);
+ if (strlen(*msg) > 6 && (*msg)[5] == '!' &&
+ (('0' <= (*msg)[0] && (*msg)[0] <= '9') ||
+ ('A' <= (*msg)[0] && (*msg)[0] <= 'Z')) &&
+ (('0' <= (*msg)[1] && (*msg)[1] <= '9') ||
+ ('A' <= (*msg)[1] && (*msg)[1] <= 'Z')) &&
+ (('0' <= (*msg)[2] && (*msg)[2] <= '9') ||
+ ('A' <= (*msg)[2] && (*msg)[2] <= 'Z')) &&
+ (('0' <= (*msg)[3] && (*msg)[3] <= '9') ||
+ ('A' <= (*msg)[3] && (*msg)[3] <= 'Z')) &&
+ (('0' <= (*msg)[4] && (*msg)[4] <= '9') ||
+ ('A' <= (*msg)[4] && (*msg)[4] <= 'Z')))
+ sqlstate = "";
+ throw(SQL, "assert", "%s%s", sqlstate, *msg);
}
return MAL_SUCCEED;
}
@@ -1788,8 +1814,21 @@ SQLassertWrd(Client cntxt, MalBlkPtr mb,
(void) cntxt;
(void)mb;
if (*flg){
+ const char *sqlstate = "M0M29!";
/* mdbDump(mb,stk,pci);*/
- throw(SQL, "assert", "M0M29!%s", *msg);
+ if (strlen(*msg) > 6 && (*msg)[5] == '!' &&
+ (('0' <= (*msg)[0] && (*msg)[0] <= '9') ||
+ ('A' <= (*msg)[0] && (*msg)[0] <= 'Z')) &&
+ (('0' <= (*msg)[1] && (*msg)[1] <= '9') ||
+ ('A' <= (*msg)[1] && (*msg)[1] <= 'Z')) &&
+ (('0' <= (*msg)[2] && (*msg)[2] <= '9') ||
+ ('A' <= (*msg)[2] && (*msg)[2] <= 'Z')) &&
+ (('0' <= (*msg)[3] && (*msg)[3] <= '9') ||
+ ('A' <= (*msg)[3] && (*msg)[3] <= 'Z')) &&
+ (('0' <= (*msg)[4] && (*msg)[4] <= '9') ||
+ ('A' <= (*msg)[4] && (*msg)[4] <= 'Z')))
+ sqlstate = "";
+ throw(SQL, "assert", "%s%s", sqlstate, *msg);
}
return MAL_SUCCEED;
}
@@ -1801,8 +1840,21 @@ SQLassertLng(Client cntxt, MalBlkPtr mb,
(void) cntxt;
(void)mb;
if (*flg){
+ const char *sqlstate = "M0M29!";
/* mdbDump(mb,stk,pci);*/
- throw(SQL, "assert", "M0M29!%s", *msg);
+ if (strlen(*msg) > 6 && (*msg)[5] == '!' &&
+ (('0' <= (*msg)[0] && (*msg)[0] <= '9') ||
+ ('A' <= (*msg)[0] && (*msg)[0] <= 'Z')) &&
+ (('0' <= (*msg)[1] && (*msg)[1] <= '9') ||
+ ('A' <= (*msg)[1] && (*msg)[1] <= 'Z')) &&
+ (('0' <= (*msg)[2] && (*msg)[2] <= '9') ||
+ ('A' <= (*msg)[2] && (*msg)[2] <= 'Z')) &&
+ (('0' <= (*msg)[3] && (*msg)[3] <= '9') ||
+ ('A' <= (*msg)[3] && (*msg)[3] <= 'Z')) &&
+ (('0' <= (*msg)[4] && (*msg)[4] <= '9') ||
+ ('A' <= (*msg)[4] && (*msg)[4] <= 'Z')))
+ sqlstate = "";
+ throw(SQL, "assert", "%s%s", sqlstate, *msg);
}
return MAL_SUCCEED;
}
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list