Skip to content

Commit bd05d68

Browse files
committed
Handle more macro collisions
1 parent 09872fb commit bd05d68

3 files changed

Lines changed: 236 additions & 51 deletions

File tree

cpp/src/arrow/flight/sql/odbc/odbc_impl/get_info_cache.cc

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,11 @@ namespace {
8686
int32_t GetInfoTypeForArrowConvertEntry(int32_t convert_entry) {
8787
switch (convert_entry) {
8888
case ARROW_CONVERT_BIGINT:
89-
return SQL_CONVERT_BIGINT;
89+
return SQL_CONVERT_BIGINT_ODBC;
9090
case ARROW_CONVERT_BINARY:
91-
return SQL_CONVERT_BINARY;
91+
return SQL_CONVERT_BINARY_ODBC;
9292
case ARROW_CONVERT_BIT:
93-
return SQL_CONVERT_BIT;
93+
return SQL_CONVERT_BIT_ODBC;
9494
case ARROW_CONVERT_CHAR:
9595
return SQL_CONVERT_CHAR;
9696
case ARROW_CONVERT_DATE:
@@ -260,7 +260,7 @@ GetInfoCache::GetInfoCache(FlightClientOptions& client_options,
260260

261261
// Assume catalogs are not supported by default. ODBC checks if SQL_CATALOG_NAME is
262262
// "Y" or "N" to determine if catalogs are supported.
263-
info_[SQL_CATALOG_TERM] = "";
263+
info_[SQL_CATALOG_TERM_ODBC] = "";
264264
info_[SQL_CATALOG_NAME] = "N";
265265
info_[SQL_CATALOG_NAME_SEPARATOR] = "";
266266
info_[SQL_CATALOG_LOCATION] = static_cast<uint16_t>(0);
@@ -345,7 +345,7 @@ bool GetInfoCache::LoadInfoFromServer() {
345345
break;
346346
}
347347
case ARROW_SQL_IDENTIFIER_QUOTE_CHAR: {
348-
info_[SQL_IDENTIFIER_QUOTE_CHAR] = std::string(
348+
info_[SQL_IDENTIFIER_QUOTE_CHAR_ODBC] = std::string(
349349
reinterpret_cast<StringScalar*>(scalar->child_value().get())->view());
350350
break;
351351
}
@@ -355,12 +355,12 @@ bool GetInfoCache::LoadInfoFromServer() {
355355
break;
356356
}
357357
case ARROW_SQL_SCHEMA_TERM: {
358-
info_[SQL_SCHEMA_TERM] = std::string(
358+
info_[SQL_SCHEMA_TERM_ODBC] = std::string(
359359
reinterpret_cast<StringScalar*>(scalar->child_value().get())->view());
360360
break;
361361
}
362362
case ARROW_SQL_PROCEDURE_TERM: {
363-
info_[SQL_PROCEDURE_TERM] = std::string(
363+
info_[SQL_PROCEDURE_TERM_ODBC] = std::string(
364364
reinterpret_cast<StringScalar*>(scalar->child_value().get())->view());
365365
break;
366366
}
@@ -376,7 +376,7 @@ bool GetInfoCache::LoadInfoFromServer() {
376376
info_[SQL_CATALOG_NAME_SEPARATOR] = ".";
377377
info_[SQL_CATALOG_LOCATION] = static_cast<uint16_t>(SQL_CL_START);
378378
}
379-
info_[SQL_CATALOG_TERM] = std::string(
379+
info_[SQL_CATALOG_TERM_ODBC] = std::string(
380380
reinterpret_cast<StringScalar*>(scalar->child_value().get())->view());
381381

382382
break;
@@ -617,27 +617,27 @@ bool GetInfoCache::LoadInfoFromServer() {
617617
break;
618618
}
619619
case ARROW_SQL_MAX_COLUMNS_IN_GROUP_BY: {
620-
info_[SQL_MAX_COLUMNS_IN_GROUP_BY] =
620+
info_[SQL_MAX_COLUMNS_IN_GROUP_BY_ODBC] =
621621
static_cast<uint16_t>(ScalarToInt64(scalar));
622622
break;
623623
}
624624
case ARROW_SQL_MAX_COLUMNS_IN_INDEX: {
625-
info_[SQL_MAX_COLUMNS_IN_INDEX] =
625+
info_[SQL_MAX_COLUMNS_IN_INDEX_ODBC] =
626626
static_cast<uint16_t>(ScalarToInt64(scalar));
627627
break;
628628
}
629629
case ARROW_SQL_MAX_COLUMNS_IN_ORDER_BY: {
630-
info_[SQL_MAX_COLUMNS_IN_ORDER_BY] =
630+
info_[SQL_MAX_COLUMNS_IN_ORDER_BY_ODBC] =
631631
static_cast<uint16_t>(ScalarToInt64(scalar));
632632
break;
633633
}
634634
case ARROW_SQL_MAX_COLUMNS_IN_SELECT: {
635-
info_[SQL_MAX_COLUMNS_IN_SELECT] =
635+
info_[SQL_MAX_COLUMNS_IN_SELECT_ODBC] =
636636
static_cast<uint16_t>(ScalarToInt64(scalar));
637637
break;
638638
}
639639
case ARROW_SQL_MAX_COLUMNS_IN_TABLE: {
640-
info_[SQL_MAX_COLUMNS_IN_TABLE] =
640+
info_[SQL_MAX_COLUMNS_IN_TABLE_ODBC] =
641641
static_cast<uint16_t>(ScalarToInt64(scalar));
642642
break;
643643
}
@@ -671,7 +671,7 @@ bool GetInfoCache::LoadInfoFromServer() {
671671
break;
672672
}
673673
case ARROW_SQL_MAX_ROW_SIZE: {
674-
info_[SQL_MAX_ROW_SIZE] = static_cast<uint32_t>(ScalarToInt64(scalar));
674+
info_[SQL_MAX_ROW_SIZE_ODBC] = static_cast<uint32_t>(ScalarToInt64(scalar));
675675
break;
676676
}
677677
case SqlInfoOptions::SQL_MAX_STATEMENT_LENGTH: {
@@ -689,7 +689,7 @@ bool GetInfoCache::LoadInfoFromServer() {
689689
break;
690690
}
691691
case ARROW_SQL_MAX_TABLES_IN_SELECT: {
692-
info_[SQL_MAX_TABLES_IN_SELECT] =
692+
info_[SQL_MAX_TABLES_IN_SELECT_ODBC] =
693693
static_cast<uint16_t>(ScalarToInt64(scalar));
694694
break;
695695
}
@@ -951,7 +951,7 @@ bool GetInfoCache::LoadInfoFromServer() {
951951
result_val);
952952
}
953953
}
954-
info_[SQL_NUMERIC_FUNCTIONS] = result_val;
954+
info_[SQL_NUMERIC_FUNCTIONS_ODBC] = result_val;
955955
break;
956956
}
957957

@@ -984,7 +984,7 @@ bool GetInfoCache::LoadInfoFromServer() {
984984
}
985985
}
986986
info_[SQL_CONVERT_FUNCTIONS] = convert_result;
987-
info_[SQL_SYSTEM_FUNCTIONS] = sys_result;
987+
info_[SQL_SYSTEM_FUNCTIONS_ODBC] = sys_result;
988988
break;
989989
}
990990
case SqlInfoOptions::SQL_DATETIME_FUNCTIONS: {
@@ -1121,15 +1121,15 @@ void GetInfoCache::LoadDefaultsForMissingEntries() {
11211121
SetDefaultIfMissing(info_, SQL_CATALOG_LOCATION, static_cast<uint16_t>(0));
11221122
SetDefaultIfMissing(info_, SQL_CATALOG_NAME, "N");
11231123
SetDefaultIfMissing(info_, SQL_CATALOG_NAME_SEPARATOR, "");
1124-
SetDefaultIfMissing(info_, SQL_CATALOG_TERM, "");
1124+
SetDefaultIfMissing(info_, SQL_CATALOG_TERM_ODBC, "");
11251125
SetDefaultIfMissing(info_, SQL_CATALOG_USAGE, static_cast<uint32_t>(0));
11261126
SetDefaultIfMissing(info_, SQL_COLLATION_SEQ, "");
11271127
SetDefaultIfMissing(info_, SQL_COLUMN_ALIAS, "Y");
11281128
SetDefaultIfMissing(info_, SQL_CONCAT_NULL_BEHAVIOR,
11291129
static_cast<uint16_t>(SQL_CB_NULL));
1130-
SetDefaultIfMissing(info_, SQL_CONVERT_BIGINT, static_cast<uint32_t>(0));
1131-
SetDefaultIfMissing(info_, SQL_CONVERT_BINARY, static_cast<uint32_t>(0));
1132-
SetDefaultIfMissing(info_, SQL_CONVERT_BIT, static_cast<uint32_t>(0));
1130+
SetDefaultIfMissing(info_, SQL_CONVERT_BIGINT_ODBC, static_cast<uint32_t>(0));
1131+
SetDefaultIfMissing(info_, SQL_CONVERT_BINARY_ODBC, static_cast<uint32_t>(0));
1132+
SetDefaultIfMissing(info_, SQL_CONVERT_BIT_ODBC, static_cast<uint32_t>(0));
11331133
SetDefaultIfMissing(info_, SQL_CONVERT_CHAR, static_cast<uint32_t>(0));
11341134
SetDefaultIfMissing(info_, SQL_CONVERT_DATE, static_cast<uint32_t>(0));
11351135
SetDefaultIfMissing(info_, SQL_CONVERT_DECIMAL, static_cast<uint32_t>(0));
@@ -1192,7 +1192,7 @@ void GetInfoCache::LoadDefaultsForMissingEntries() {
11921192
SetDefaultIfMissing(info_, SQL_GROUP_BY,
11931193
static_cast<uint16_t>(SQL_GB_GROUP_BY_CONTAINS_SELECT));
11941194
SetDefaultIfMissing(info_, SQL_IDENTIFIER_CASE_ODBC, static_cast<uint16_t>(SQL_IC_MIXED));
1195-
SetDefaultIfMissing(info_, SQL_IDENTIFIER_QUOTE_CHAR, "\"");
1195+
SetDefaultIfMissing(info_, SQL_IDENTIFIER_QUOTE_CHAR_ODBC, "\"");
11961196
SetDefaultIfMissing(info_, SQL_INDEX_KEYWORDS, static_cast<uint32_t>(SQL_IK_NONE));
11971197
SetDefaultIfMissing(
11981198
info_, SQL_INFO_SCHEMA_VIEWS,
@@ -1209,37 +1209,37 @@ void GetInfoCache::LoadDefaultsForMissingEntries() {
12091209
SetDefaultIfMissing(info_, SQL_MAX_CATALOG_NAME_LEN, static_cast<uint16_t>(0));
12101210
SetDefaultIfMissing(info_, SQL_MAX_CHAR_LITERAL_LEN, static_cast<uint32_t>(0));
12111211
SetDefaultIfMissing(info_, SQL_MAX_COLUMN_NAME_LEN, static_cast<uint16_t>(0));
1212-
SetDefaultIfMissing(info_, SQL_MAX_COLUMNS_IN_GROUP_BY, static_cast<uint16_t>(0));
1213-
SetDefaultIfMissing(info_, SQL_MAX_COLUMNS_IN_INDEX, static_cast<uint16_t>(0));
1214-
SetDefaultIfMissing(info_, SQL_MAX_COLUMNS_IN_ORDER_BY, static_cast<uint16_t>(0));
1215-
SetDefaultIfMissing(info_, SQL_MAX_COLUMNS_IN_SELECT, static_cast<uint16_t>(0));
1216-
SetDefaultIfMissing(info_, SQL_MAX_COLUMNS_IN_TABLE, static_cast<uint16_t>(0));
1212+
SetDefaultIfMissing(info_, SQL_MAX_COLUMNS_IN_GROUP_BY_ODBC, static_cast<uint16_t>(0));
1213+
SetDefaultIfMissing(info_, SQL_MAX_COLUMNS_IN_INDEX_ODBC, static_cast<uint16_t>(0));
1214+
SetDefaultIfMissing(info_, SQL_MAX_COLUMNS_IN_ORDER_BY_ODBC, static_cast<uint16_t>(0));
1215+
SetDefaultIfMissing(info_, SQL_MAX_COLUMNS_IN_SELECT_ODBC, static_cast<uint16_t>(0));
1216+
SetDefaultIfMissing(info_, SQL_MAX_COLUMNS_IN_TABLE_ODBC, static_cast<uint16_t>(0));
12171217
SetDefaultIfMissing(info_, SQL_MAX_CONCURRENT_ACTIVITIES, static_cast<uint16_t>(0));
12181218
SetDefaultIfMissing(info_, SQL_MAX_CURSOR_NAME_LEN, static_cast<uint16_t>(0));
12191219
SetDefaultIfMissing(info_, SQL_MAX_DRIVER_CONNECTIONS, static_cast<uint16_t>(0));
12201220
SetDefaultIfMissing(info_, SQL_MAX_IDENTIFIER_LEN, static_cast<uint16_t>(65535));
12211221
SetDefaultIfMissing(info_, SQL_MAX_INDEX_SIZE, static_cast<uint32_t>(0));
12221222
SetDefaultIfMissing(info_, SQL_MAX_PROCEDURE_NAME_LEN, static_cast<uint16_t>(0));
1223-
SetDefaultIfMissing(info_, SQL_MAX_ROW_SIZE, static_cast<uint32_t>(0));
1223+
SetDefaultIfMissing(info_, SQL_MAX_ROW_SIZE_ODBC, static_cast<uint32_t>(0));
12241224
SetDefaultIfMissing(info_, SQL_MAX_ROW_SIZE_INCLUDES_LONG, "N");
12251225
SetDefaultIfMissing(info_, SQL_MAX_SCHEMA_NAME_LEN, static_cast<uint16_t>(0));
12261226
SetDefaultIfMissing(info_, SQL_MAX_STATEMENT_LEN, static_cast<uint32_t>(0));
12271227
SetDefaultIfMissing(info_, SQL_MAX_TABLE_NAME_LEN, static_cast<uint16_t>(0));
1228-
SetDefaultIfMissing(info_, SQL_MAX_TABLES_IN_SELECT, static_cast<uint16_t>(0));
1228+
SetDefaultIfMissing(info_, SQL_MAX_TABLES_IN_SELECT_ODBC, static_cast<uint16_t>(0));
12291229
SetDefaultIfMissing(info_, SQL_MAX_USER_NAME_LEN, static_cast<uint16_t>(0));
12301230
SetDefaultIfMissing(info_, SQL_NON_NULLABLE_COLUMNS,
12311231
static_cast<uint16_t>(SQL_NNC_NULL));
12321232
SetDefaultIfMissing(info_, SQL_NULL_COLLATION, static_cast<uint16_t>(SQL_NC_END));
1233-
SetDefaultIfMissing(info_, SQL_NUMERIC_FUNCTIONS, static_cast<uint32_t>(0));
1233+
SetDefaultIfMissing(info_, SQL_NUMERIC_FUNCTIONS_ODBC, static_cast<uint32_t>(0));
12341234
SetDefaultIfMissing(info_, SQL_OJ_CAPABILITIES,
12351235
static_cast<uint32_t>(SQL_OJ_LEFT | SQL_OJ_RIGHT | SQL_OJ_FULL));
12361236
SetDefaultIfMissing(info_, SQL_ORDER_BY_COLUMNS_IN_SELECT, "Y");
12371237
SetDefaultIfMissing(info_, SQL_OUTER_JOINS, "N");
1238-
SetDefaultIfMissing(info_, SQL_PROCEDURE_TERM, "");
1238+
SetDefaultIfMissing(info_, SQL_PROCEDURE_TERM_ODBC, "");
12391239
SetDefaultIfMissing(info_, SQL_PROCEDURES, "N");
1240-
SetDefaultIfMissing(info_, SQL_QUOTED_IDENTIFIER_CASE,
1240+
SetDefaultIfMissing(info_, SQL_QUOTED_IDENTIFIER_CASE_ODBC,
12411241
static_cast<uint16_t>(SQL_IC_SENSITIVE));
1242-
SetDefaultIfMissing(info_, SQL_SCHEMA_TERM, "schema");
1242+
SetDefaultIfMissing(info_, SQL_SCHEMA_TERM_ODBC, "schema");
12431243
SetDefaultIfMissing(info_, SQL_SCHEMA_USAGE,
12441244
static_cast<uint32_t>(SQL_SU_DML_STATEMENTS));
12451245
SetDefaultIfMissing(info_, SQL_SEARCH_PATTERN_ESCAPE, "\\");
@@ -1286,7 +1286,7 @@ void GetInfoCache::LoadDefaultsForMissingEntries() {
12861286
info_, SQL_SUBQUERIES,
12871287
static_cast<uint32_t>(SQL_SQ_CORRELATED_SUBQUERIES | SQL_SQ_COMPARISON |
12881288
SQL_SQ_EXISTS | SQL_SQ_IN | SQL_SQ_QUANTIFIED));
1289-
SetDefaultIfMissing(info_, SQL_SYSTEM_FUNCTIONS,
1289+
SetDefaultIfMissing(info_, SQL_SYSTEM_FUNCTIONS_ODBC,
12901290
static_cast<uint32_t>(SQL_FN_SYS_IFNULL | SQL_FN_SYS_USERNAME));
12911291
SetDefaultIfMissing(info_, SQL_TIMEDATE_ADD_INTERVALS,
12921292
static_cast<uint32_t>(

cpp/src/arrow/flight/sql/odbc/odbc_impl/odbc_connection.cc

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -245,21 +245,21 @@ SQLRETURN ODBCConnection::GetInfo(SQLUSMALLINT info_type, SQLPOINTER value,
245245
case SQL_DATA_SOURCE_READ_ONLY:
246246
case SQL_ACCESSIBLE_TABLES:
247247
case SQL_ACCESSIBLE_PROCEDURES:
248-
case SQL_CATALOG_TERM:
248+
case SQL_CATALOG_TERM_ODBC:
249249
case SQL_COLLATION_SEQ:
250-
case SQL_SCHEMA_TERM:
250+
case SQL_SCHEMA_TERM_ODBC:
251251
case SQL_CATALOG_NAME:
252252
case SQL_CATALOG_NAME_SEPARATOR:
253253
case SQL_EXPRESSIONS_IN_ORDERBY:
254-
case SQL_IDENTIFIER_QUOTE_CHAR:
254+
case SQL_IDENTIFIER_QUOTE_CHAR_ODBC:
255255
case SQL_INTEGRITY:
256256
case SQL_KEYWORDS:
257257
case SQL_LIKE_ESCAPE_CLAUSE:
258258
case SQL_MAX_ROW_SIZE_INCLUDES_LONG:
259259
case SQL_ORDER_BY_COLUMNS_IN_SELECT:
260260
case SQL_OUTER_JOINS: // Not documented in SQLGetInfo, but other drivers return Y/N
261261
// strings
262-
case SQL_PROCEDURE_TERM:
262+
case SQL_PROCEDURE_TERM_ODBC:
263263
case SQL_PROCEDURES:
264264
case SQL_SPECIAL_CHARACTERS:
265265
case SQL_XOPEN_CLI_YEAR: {
@@ -297,18 +297,18 @@ SQLRETURN ODBCConnection::GetInfo(SQLUSMALLINT info_type, SQLPOINTER value,
297297
case SQL_UNION:
298298
case SQL_MAX_BINARY_LITERAL_LEN:
299299
case SQL_MAX_CHAR_LITERAL_LEN:
300-
case SQL_MAX_ROW_SIZE:
300+
case SQL_MAX_ROW_SIZE_ODBC:
301301
case SQL_MAX_STATEMENT_LEN:
302302
case SQL_CONVERT_FUNCTIONS:
303-
case SQL_NUMERIC_FUNCTIONS:
303+
case SQL_NUMERIC_FUNCTIONS_ODBC:
304304
case SQL_STRING_FUNCTIONS:
305-
case SQL_SYSTEM_FUNCTIONS:
305+
case SQL_SYSTEM_FUNCTIONS_ODBC:
306306
case SQL_TIMEDATE_ADD_INTERVALS:
307307
case SQL_TIMEDATE_DIFF_INTERVALS:
308308
case SQL_TIMEDATE_FUNCTIONS:
309-
case SQL_CONVERT_BIGINT:
310-
case SQL_CONVERT_BINARY:
311-
case SQL_CONVERT_BIT:
309+
case SQL_CONVERT_BIGINT_ODBC:
310+
case SQL_CONVERT_BINARY_ODBC:
311+
case SQL_CONVERT_BIT_ODBC:
312312
case SQL_CONVERT_CHAR:
313313
case SQL_CONVERT_DATE:
314314
case SQL_CONVERT_DECIMAL:
@@ -371,19 +371,19 @@ SQLRETURN ODBCConnection::GetInfo(SQLUSMALLINT info_type, SQLPOINTER value,
371371
case SQL_GROUP_BY:
372372
case SQL_IDENTIFIER_CASE_ODBC:
373373
case SQL_NON_NULLABLE_COLUMNS:
374-
case SQL_QUOTED_IDENTIFIER_CASE:
374+
case SQL_QUOTED_IDENTIFIER_CASE_ODBC:
375375
case SQL_MAX_CATALOG_NAME_LEN:
376376
case SQL_MAX_COLUMN_NAME_LEN:
377-
case SQL_MAX_COLUMNS_IN_GROUP_BY:
378-
case SQL_MAX_COLUMNS_IN_INDEX:
379-
case SQL_MAX_COLUMNS_IN_ORDER_BY:
380-
case SQL_MAX_COLUMNS_IN_SELECT:
381-
case SQL_MAX_COLUMNS_IN_TABLE:
377+
case SQL_MAX_COLUMNS_IN_GROUP_BY_ODBC:
378+
case SQL_MAX_COLUMNS_IN_INDEX_ODBC:
379+
case SQL_MAX_COLUMNS_IN_ORDER_BY_ODBC:
380+
case SQL_MAX_COLUMNS_IN_SELECT_ODBC:
381+
case SQL_MAX_COLUMNS_IN_TABLE_ODBC:
382382
case SQL_MAX_CURSOR_NAME_LEN:
383383
case SQL_MAX_IDENTIFIER_LEN:
384384
case SQL_MAX_SCHEMA_NAME_LEN:
385385
case SQL_MAX_TABLE_NAME_LEN:
386-
case SQL_MAX_TABLES_IN_SELECT:
386+
case SQL_MAX_TABLES_IN_SELECT_ODBC:
387387
case SQL_MAX_PROCEDURE_NAME_LEN:
388388
case SQL_MAX_USER_NAME_LEN:
389389
case SQL_ODBC_SQL_CONFORMANCE:

0 commit comments

Comments
 (0)