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 checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list