@@ -14,80 +14,13 @@ extern "C" {
1414
1515#include " connected_dbc.h"
1616
17- /*
18- * Answer ES/SQL sends to SYS TYPES
19- */
20- static const char systypes_answer[] = " \
21- {\
22- \" columns\" :[\
23- {\" name\" :\" TYPE_NAME\" ,\" type\" :\" keyword\" ,\" display_size\" :32766},\
24- {\" name\" :\" DATA_TYPE\" ,\" type\" :\" integer\" ,\" display_size\" :11},\
25- {\" name\" :\" PRECISION\" ,\" type\" :\" integer\" ,\" display_size\" :11},\
26- {\" name\" :\" LITERAL_PREFIX\" ,\" type\" :\" keyword\" ,\" display_size\" :32766},\
27- {\" name\" :\" LITERAL_SUFFIX\" ,\" type\" :\" keyword\" ,\" display_size\" :32766},\
28- {\" name\" :\" CREATE_PARAMS\" ,\" type\" :\" keyword\" ,\" display_size\" :32766},\
29- {\" name\" :\" NULLABLE\" ,\" type\" :\" short\" ,\" display_size\" :6},\
30- {\" name\" :\" CASE_SENSITIVE\" ,\" type\" :\" boolean\" ,\" display_size\" :1},\
31- {\" name\" :\" SEARCHABLE\" ,\" type\" :\" short\" ,\" display_size\" :6},\
32- {\" name\" :\" UNSIGNED_ATTRIBUTE\" ,\" type\" :\" boolean\" ,\" display_size\" :1},\
33- {\" name\" :\" FIXED_PREC_SCALE\" ,\" type\" :\" boolean\" ,\" display_size\" :1},\
34- {\" name\" :\" AUTO_INCREMENT\" ,\" type\" :\" boolean\" ,\" display_size\" :1},\
35- {\" name\" :\" LOCAL_TYPE_NAME\" ,\" type\" :\" keyword\" ,\" display_size\" :32766},\
36- {\" name\" :\" MINIMUM_SCALE\" ,\" type\" :\" short\" ,\" display_size\" :6},\
37- {\" name\" :\" MAXIMUM_SCALE\" ,\" type\" :\" short\" ,\" display_size\" :6},\
38- {\" name\" :\" SQL_DATA_TYPE\" ,\" type\" :\" integer\" ,\" display_size\" :11},\
39- {\" name\" :\" SQL_DATETIME_SUB\" ,\" type\" :\" integer\" ,\" display_size\" :11},\
40- {\" name\" :\" NUM_PREC_RADIX\" ,\" type\" :\" integer\" ,\" display_size\" :11},\
41- {\" name\" :\" INTERVAL_PRECISION\" ,\" type\" :\" integer\" ,\" display_size\" :11}\
42- ],\
43- \" rows\" :[\
44- [\" BYTE\" ,-6,3,\" '\" ,\" '\" ,null,2,false,3,false,false,false,null,0,0,-6,0,10,null],\
45- [\" LONG\" ,-5,19,\" '\" ,\" '\" ,null,2,false,3,false,false,false,null,0,0,-5,0,10,null],\
46- [\" BINARY\" ,-3,2147483647,\" '\" ,\" '\" ,null,2,false,3,true,false,false,null,null,null,-3,0,null,null],\
47- [\" NULL\" ,0,0,\" '\" ,\" '\" ,null,2,false,3,true,false,false,null,null,null,0,0,null,null],\
48- [\" INTEGER\" ,4,10,\" '\" ,\" '\" ,null,2,false,3,false,false,false,null,0,0,4,0,10,null],\
49- [\" SHORT\" ,5,5,\" '\" ,\" '\" ,null,2,false,3,false,false,false,null,0,0,5,0,10,null],\
50- [\" HALF_FLOAT\" ,6,3,\" '\" ,\" '\" ,null,2,false,3,false,false,false,null,3,3,6,0,2,null],\
51- [\" FLOAT\" ,7,7,\" '\" ,\" '\" ,null,2,false,3,false,false,false,null,7,7,7,0,2,null],\
52- [\" DOUBLE\" ,8,15,\" '\" ,\" '\" ,null,2,false,3,false,false,false,null,15,15,8,0,2,null],\
53- [\" SCALED_FLOAT\" ,8,15,\" '\" ,\" '\" ,null,2,false,3,false,false,false,null,15,15,8,0,2,null],\
54- [\" KEYWORD\" ,12,32766,\" '\" ,\" '\" ,null,2,true,3,true,false,false,null,null,null,12,0,null,null],\
55- [\" TEXT\" ,12,2147483647,\" '\" ,\" '\" ,null,2,true,3,true,false,false,null,null,null,12,0,null,null],\
56- [\" IP\" ,12,0,\" '\" ,\" '\" ,null,2,false,3,true,false,false,null,null,null,12,0,null,null],\
57- [\" BOOLEAN\" ,16,1,\" '\" ,\" '\" ,null,2,false,3,true,false,false,null,null,null,16,0,null,null],\
58- [\" DATE\" ,91,29,\" '\" ,\" '\" ,null,2,false,3,true,false,false,null,null,null,91,1,null,null],\
59- [\" TIME\" ,92,18,\" '\" ,\" '\" ,null,2,false,3,true,false,false,null,3,3,92,2,null,null],\
60- [\" DATETIME\" ,93,29,\" '\" ,\" '\" ,null,2,false,3,true,false,false,null,3,3,9,3,null,null],\
61- [\" INTERVAL_YEAR\" ,101,7,\" '\" ,\" '\" ,null,2,false,3,true,false,false,null,null,null,101,0,null,null],\
62- [\" INTERVAL_MONTH\" ,102,7,\" '\" ,\" '\" ,null,2,false,3,true,false,false,null,null,null,102,0,null,null],\
63- [\" INTERVAL_DAY\" ,103,23,\" '\" ,\" '\" ,null,2,false,3,true,false,false,null,null,null,103,0,null,null],\
64- [\" INTERVAL_HOUR\" ,104,23,\" '\" ,\" '\" ,null,2,false,3,true,false,false,null,null,null,104,0,null,null],\
65- [\" INTERVAL_MINUTE\" ,105,23,\" '\" ,\" '\" ,null,2,false,3,true,false,false,null,null,null,105,0,null,null],\
66- [\" INTERVAL_SECOND\" ,106,23,\" '\" ,\" '\" ,null,2,false,3,true,false,false,null,null,null,106,0,null,null],\
67- [\" INTERVAL_YEAR_TO_MONTH\" ,107,7,\" '\" ,\" '\" ,null,2,false,3,true,false,false,null,null,null,107,0,null,null],\
68- [\" INTERVAL_DAY_TO_HOUR\" ,108,23,\" '\" ,\" '\" ,null,2,false,3,true,false,false,null,null,null,108,0,null,null],\
69- [\" INTERVAL_DAY_TO_MINUTE\" ,109,23,\" '\" ,\" '\" ,null,2,false,3,true,false,false,null,null,null,109,0,null,null],\
70- [\" INTERVAL_DAY_TO_SECOND\" ,110,23,\" '\" ,\" '\" ,null,2,false,3,true,false,false,null,null,null,110,0,null,null],\
71- [\" INTERVAL_HOUR_TO_MINUTE\" ,111,23,\" '\" ,\" '\" ,null,2,false,3,true,false,false,null,null,null,111,0,null,null],\
72- [\" INTERVAL_HOUR_TO_SECOND\" ,112,23,\" '\" ,\" '\" ,null,2,false,3,true,false,false,null,null,null,112,0,null,null],\
73- [\" INTERVAL_MINUTE_TO_SECOND\" ,113,23,\" '\" ,\" '\" ,null,2,false,3,true,false,false,null,null,null,113,0,null,null],\
74- [\" UNSUPPORTED\" ,1111,0,\" '\" ,\" '\" ,null,2,false,3,true,false,false,null,null,null,1111,0,null,null],\
75- [\" OBJECT\" ,2002,0,\" '\" ,\" '\" ,null,2,false,3,true,false,false,null,null,null,2002,0,null,null],\
76- [\" NESTED\" ,2002,0,\" '\" ,\" '\" ,null,2,false,3,true,false,false,null,null,null,2002,0,null,null]\
77- ]\
78- }" ;
79-
80- /* minimal, valid connection string */
81- static const SQLWCHAR connect_string[] = L" Driver=ElasticODBC" ;
82-
8317
8418/*
8519 * Class will provide a "connected" DBC: the ES types are loaded.
8620 */
8721ConnectedDBC::ConnectedDBC ()
8822{
89- SQLRETURN ret;
90- cstr_st types;
23+ cstr_st types = {0 };
9124
9225 assert (getenv (" TZ" ) == NULL );
9326
@@ -101,14 +34,12 @@ ConnectedDBC::ConnectedDBC()
10134 ret = SQLAllocHandle (SQL_HANDLE_DBC, env, &dbc);
10235 assert (SQL_SUCCEEDED (ret));
10336
104-
105- types.cnt = sizeof (systypes_answer) - 1 ;
106- types.str = (SQLCHAR *)malloc (types.cnt );
37+ types.str = (SQLCHAR *)strdup (SYSTYPES_ANSWER);
10738 assert (types.str != NULL );
108- memcpy ( types.str , systypes_answer, types. cnt ) ;
39+ types.cnt = sizeof (SYSTYPES_ANSWER) - 1 ;
10940
110- ret = SQLDriverConnect (dbc, (SQLHWND)&types, (SQLWCHAR *)connect_string ,
111- sizeof (connect_string ) / sizeof (connect_string [0 ]) - 1 , NULL , 0 , NULL ,
41+ ret = SQLDriverConnect (dbc, (SQLHWND)&types, (SQLWCHAR *)CONNECT_STRING ,
42+ sizeof (CONNECT_STRING ) / sizeof (CONNECT_STRING [0 ]) - 1 , NULL , 0 , NULL ,
11243 ESODBC_SQL_DRIVER_TEST);
11344 assert (SQL_SUCCEEDED (ret));
11445
0 commit comments