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

Reply via email to