Changeset: 432d3b78ff46 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=432d3b78ff46
Modified Files:
clients/odbc/driver/ODBCUtil.c
Branch: default
Log Message:
ODBC: Implemented {interval ...} escape sequence.
diffs (45 lines):
diff --git a/clients/odbc/driver/ODBCUtil.c b/clients/odbc/driver/ODBCUtil.c
--- a/clients/odbc/driver/ODBCUtil.c
+++ b/clients/odbc/driver/ODBCUtil.c
@@ -292,7 +292,7 @@ static struct scalars {
{"char", 1, NULL, },
{"char_length", 1, "\"char_length\"(\1)", },
{"character_length", 1, "\"character_length\"(\1)", },
- {"concat", 2, "(\1 || \2)", },
+ {"concat", 2, "\"concat\"(\1,\2)", },
{"difference", 2, "\"difference\"(\1,\2)", },
{"insert", 4, "\"insert\"(\1,\2,\3,\4)", },
{"lcase", 1, "\"lcase\"(\1)", },
@@ -512,7 +512,6 @@ ODBCTranslateSQL(ODBCDbc *dbc, const SQL
if (*p != '}')
continue;
p++;
- pr = 0;
snprintf(buf, sizeof(buf),
"DATE '%04u-%02u-%02u'", yr, mt, dy);
n = (int) (q - nquery);
@@ -522,6 +521,24 @@ ODBCTranslateSQL(ODBCDbc *dbc, const SQL
free(nquery);
nquery = q;
q += n;
+ } else if (strncasecmp(p, "interval", 8) == 0 && p[8] == ' ') {
+ const char *intv = p;
+ size_t intvl;
+
+ p = strchr(p, '}');
+ if (p == NULL)
+ continue;
+ intvl = p - intv;
+ while (intv[intvl - 1] == ' ')
+ intvl--;
+ p++;
+ n = (int) (q - nquery);
+ pr = (int) (p - q);
+ q = malloc(length - pr + intvl + 1);
+ sprintf(q, "%.*s%.*s%s", n, nquery, (int) intvl, intv,
p);
+ free(nquery);
+ nquery = q;
+ q += n;
} else if (p[0] == 'f' && p[1] == 'n' && p[2] == ' ') {
const char *scalarfunc;
size_t scalarfunclen;
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list