Changeset: cd7802d93fd4 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/cd7802d93fd4
Modified Files:
        clients/odbc/driver/SQLGetInfo.c
        clients/odbc/tests/ODBCgetInfo.c
        sql/test/odbc-escape-sequences/Tests/time-date-interval-functions.test
Branch: Jun2023
Log Message:

SQL_TSI_FRAC_SECOND is now also suported for both timestampadd() and 
timestampdiff() functions.


diffs (64 lines):

diff --git a/clients/odbc/driver/SQLGetInfo.c b/clients/odbc/driver/SQLGetInfo.c
--- a/clients/odbc/driver/SQLGetInfo.c
+++ b/clients/odbc/driver/SQLGetInfo.c
@@ -1038,7 +1038,8 @@ MNDBGetInfo(ODBCDbc *dbc,
        case SQL_TIMEDATE_ADD_INTERVALS:
        case SQL_TIMEDATE_DIFF_INTERVALS:
                /* when server is 11.46 or higher */
-               nValue = SQL_FN_TSI_SECOND |
+               nValue = SQL_FN_TSI_FRAC_SECOND |
+                       SQL_FN_TSI_SECOND |
                        SQL_FN_TSI_MINUTE |
                        SQL_FN_TSI_HOUR |
                        SQL_FN_TSI_DAY |
@@ -1046,7 +1047,6 @@ MNDBGetInfo(ODBCDbc *dbc,
                        SQL_FN_TSI_MONTH |
                        SQL_FN_TSI_QUARTER |
                        SQL_FN_TSI_YEAR;
-               /* SQL_FN_TSI_FRAC_SECOND | */
                break;
        case SQL_TIMEDATE_FUNCTIONS:
                nValue = SQL_FN_TD_CURRENT_DATE |
diff --git a/clients/odbc/tests/ODBCgetInfo.c b/clients/odbc/tests/ODBCgetInfo.c
--- a/clients/odbc/tests/ODBCgetInfo.c
+++ b/clients/odbc/tests/ODBCgetInfo.c
@@ -1080,13 +1080,13 @@ const struct {
                .info = SQL_TIMEDATE_ADD_INTERVALS,
                .name = "SQL_TIMEDATE_ADD_INTERVALS",
                .type = INTEGER,
-               .i = SQL_FN_TSI_SECOND | SQL_FN_TSI_MINUTE | SQL_FN_TSI_HOUR | 
SQL_FN_TSI_DAY | SQL_FN_TSI_WEEK | SQL_FN_TSI_MONTH | SQL_FN_TSI_QUARTER | 
SQL_FN_TSI_YEAR,
+               .i = SQL_FN_TSI_FRAC_SECOND | SQL_FN_TSI_SECOND | 
SQL_FN_TSI_MINUTE | SQL_FN_TSI_HOUR | SQL_FN_TSI_DAY | SQL_FN_TSI_WEEK | 
SQL_FN_TSI_MONTH | SQL_FN_TSI_QUARTER | SQL_FN_TSI_YEAR,
        },
        {
                .info = SQL_TIMEDATE_DIFF_INTERVALS,
                .name = "SQL_TIMEDATE_DIFF_INTERVALS",
                .type = INTEGER,
-               .i = SQL_FN_TSI_SECOND | SQL_FN_TSI_MINUTE | SQL_FN_TSI_HOUR | 
SQL_FN_TSI_DAY | SQL_FN_TSI_WEEK | SQL_FN_TSI_MONTH | SQL_FN_TSI_QUARTER | 
SQL_FN_TSI_YEAR,
+               .i = SQL_FN_TSI_FRAC_SECOND | SQL_FN_TSI_SECOND | 
SQL_FN_TSI_MINUTE | SQL_FN_TSI_HOUR | SQL_FN_TSI_DAY | SQL_FN_TSI_WEEK | 
SQL_FN_TSI_MONTH | SQL_FN_TSI_QUARTER | SQL_FN_TSI_YEAR,
        },
        {
                .info = SQL_TIMEDATE_FUNCTIONS,
diff --git 
a/sql/test/odbc-escape-sequences/Tests/time-date-interval-functions.test 
b/sql/test/odbc-escape-sequences/Tests/time-date-interval-functions.test
--- a/sql/test/odbc-escape-sequences/Tests/time-date-interval-functions.test
+++ b/sql/test/odbc-escape-sequences/Tests/time-date-interval-functions.test
@@ -314,7 +314,7 @@ select { fn timestampadd(SQL_TSI_DAY, 14
 2022-12-12 14:13:12
 
 query T rowsort
-select { fn timestampadd(SQL_TSI_DAY, 28, timestamp'2022-11-14 14:13:12') }
+select { fn timestampadd(SQL_TSI_DAY, 4*7, timestamp'2022-11-14 14:13:12') }
 ----
 2022-12-12 14:13:12
 
@@ -344,6 +344,11 @@ 2027-11-14 14:13:12
 # interval has the same value as TIMESTAMPADD.
 # Fractional seconds are expressed in billionths of a second.
 
+query T rowsort
+select cast ({ fn timestampdiff(SQL_TSI_FRAC_SECOND, { ts '2022-12-12 
12:00:00.123456'}, {ts'2022-12-12 12:00:30.654321' }) } as varchar(20))
+----
+30.531
+
 query I rowsort
 select { fn timestampdiff(SQL_TSI_SECOND, timestamp'2022-12-12 12:00:00', 
timestamp'2022-12-12 12:00:30') }
 ----
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to