driver/defs.h (235 lines of code) (raw):

/* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ #ifndef __DEFS_H__ #define __DEFS_H__ /* * DEFaultS */ /* Tracing log buffer size. */ #define ESODBC_LOG_BUF_SIZE (4 * 1024) #ifdef WITH_EXTENDED_BUFF_LOG # define ESODBC_EXT_LOG_BUF_SIZE (ESODBC_LOG_BUF_SIZE * 1024) #endif /* WITH_EXTENDED_BUFF_LOG */ /* Log file prefix. The format is: prefix_datime */ #define ESODBC_LOG_FILE_PREFIX "esodbc" #define ESODBC_LOG_FILE_SUFFIX ".log" /* Environment variable name holding the log directory name */ #define ESODBC_LOG_DIR_ENV_VAR "ESODBC_LOG_DIR" /* number of consecutive logging failures that will disable logging */ #define ESODBC_LOG_MAX_RETRY 5 /* the (POSIX) timezone environment variable */ #define ESODBC_TZ_ENV_VAR "TZ" #define ESODBC_MAX_ROW_ARRAY_SIZE USHRT_MAX /* max number of ES/SQL types supported */ #define ESODBC_MAX_NO_TYPES 64 #define ESODBC_DEF_ARRAY_SIZE 1 /* max cols or args to bind; needs to stay <= SHRT_MAX */ #define ESODBC_MAX_DESC_COUNT SHRT_MAX /* number of static records for SQLGetData(): if using SQLGetData() with more * columns than this def, recs will be allocated dynamically. */ #define ESODBC_GD_DESC_COUNT 128 /* values for SQL_ATTR_MAX_LENGTH statement attribute */ #define ESODBC_UP_MAX_LENGTH 0 #define ESODBC_LO_MAX_LENGTH 0 /* Prepare a STMT for a new SQL operation. * To be used with catalog functions, that can be all called with same stmt. * After SQL_CLOSE, an applicatoin can re-open a cursor for same query. */ #define ESODBC_SQL_CLOSE ((SQLUSMALLINT)-1) #ifdef TESTING /* connecting mode for testing */ #define ESODBC_SQL_DRIVER_TEST ((SQLUSMALLINT)-1) #endif /* TESTING */ #define ESODBC_ALL_TABLES "%" #define ESODBC_ALL_COLUMNS "%" #define ESODBC_STRING_DELIM "'" #define ESODBC_QUOTE_CHAR "\"" #define ESODBC_CHAR_ESCAPE '\\' #define ESODBC_PATTERN_ESCAPE "\\" #define ESODBC_CATALOG_SEPARATOR ":" #define ESODBC_CATALOG_TERM "catalog" #define ESODBC_TABLE_TERM "table" #define ESODBC_SCHEMA_TERM "schema" #define ESODBC_PARAM_MARKER '?' /* maximum identifer length: match ES/Lucene byte max */ #define ESODBC_MAX_IDENTIFIER_LEN SHRT_MAX /* "the relationship between the columns in the GROUP BY clause and the * nonaggregated columns in the select list" */ #define ESODBC_GROUP_BY SQL_GB_NO_RELATION /* 20 = len("18446744073709551616"), 1 << (sizeof(uint64_t) * 8bits) */ #define ESODBC_PRECISION_UINT64 20 /* 19 = len("9223372036854775808"), 1 << 63 */ #define ESODBC_PRECISION_INT64 19 /* TODO: validate "implementation-defined precision" choices */ /* default precision for DECIMAL and NUMERIC */ #define ESODBC_DEF_DECNUM_PRECISION 19 /* default precision for SQL_FLOAT (variable, vs. fixed SQL_DOUBLE/_REAL) */ #define ESODBC_DEF_FLOAT_PRECISION 16 /* minimum = HALF_FLOAT */ /* maximum seconds precision (i.e. sub-second accuracy) */ /* Seconds precision is currently 3, with ES/SQL's ISO8601 millis. * (Should move to 9 with nanosecond implementation) */ #define ESODBC_MAX_SEC_PRECISION 9 #define ESODBC_DEF_SEC_PRECISION 3 /* max keyword column/"buffer" size ("Lucene's term byte-length limit") */ #define ESODBC_MAX_KEYWORD_PRECISION 32766 /* * standard specified defaults: * https://docs.microsoft.com/en-us/sql/odbc/reference/syntax/sqlsetdescfield-function##record-fields */ /* string */ #define ESODBC_DEF_STRING_LENGTH 1 #define ESODBC_DEF_STRING_PRECISION 0 /* time */ #define ESODBC_DEF_DATETIME_PRECISION 0 #define ESODBC_DEF_TIMESTAMP_PRECISION 6 /* interval */ #define ESODBC_DEF_IVL_WS_PRECISION 6 #define ESODBC_DEF_IVL_WOS_DT_PREC 2 /* decimal, numeric */ #define ESODBC_DEF_DECNUM_SCALE 0 /* * interval lead precision maxes: * - YEAR,MONTH: LONG_MAX (2147483647) * - DAY: 106751991167300 * - HOUR: 2562047788015215 * - MINUTE: 153722867280912930 (0x0222,2222,2222,2222) * - SECOND: LLONG_MAX (9223372036854775807) * with Duration/Period of 11.0.1+13-LTS Win x64 O-JVM. * TODO: reasoning for these maxes mix?? */ #define ESODBC_MAX_IVL_YEAR_LEAD_PREC (sizeof("-2147483647") - 1) #define ESODBC_MAX_IVL_MONTH_LEAD_PREC (sizeof("-2147483647") - 1) #define ESODBC_MAX_IVL_DAY_LEAD_PREC (sizeof("-106751991167300") - 1) #define ESODBC_MAX_IVL_HOUR_LEAD_PREC (sizeof("-2562047788015215") - 1) #define ESODBC_MAX_IVL_MINUTE_LEAD_PREC (sizeof("-153722867280912930") - 1) #define ESODBC_MAX_IVL_SECOND_LEAD_PREC (sizeof("-9223372036854775807") - 1) /* * Not authoriative (there's actually no formal limit), but pretty informed: * https://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url-in-different-browsers */ /* maximum URL size */ #define ESODBC_MAX_URL_LEN 2048 /* maximum DNS attribute value length (should be long enought to accomodate a * decently long FQ file path name) */ #define ESODBC_DSN_MAX_ATTR_LEN 768 /* SQL plugin's REST endpoint for SQL */ #define ELASTIC_SQL_PATH "/_sql" #define ELASTIC_SQL_CLOSE_SUBPATH "/close" /* initial receive buffer size for REST answers */ #define ESODBC_BODY_BUF_START_SIZE (4 * 1024) /* * Versions */ /* driver version ex. 7.0.0(b0a34b4,u,d) */ #define ESODBC_DRIVER_VER STR(DRV_VERSION) \ "(" STR(DRV_SRC_VER) "," STR(DRV_ENCODING) "," STR(DRV_BUILD_TYPE) ")" #define ESODBC_ELASTICSEARCH_NAME "Elasticsearch" /* the driver will work with an ES node of this version and higher */ #define ESODBC_MIN_ES_VER "7.7.0" /* * Config defaults */ /* default maximum amount of bytes to accept in REST answers */ #define ESODBC_DEF_MAX_BODY_SIZE_MB "100" /* max number of rows to request from server */ #define ESODBC_DEF_FETCH_SIZE "0" // no fetch size /* default host to connect to */ //#define ESODBC_DEF_SERVER "localhost" /* to allow loopback capture on Win10 */ #define ESODBC_DEF_SERVER "127.0.0.1" /* Elasticsearch's default port */ #define ESODBC_DEF_PORT "9200" /* Elasticsearch on Cloud default port */ #define ESODBC_DEF_CLOUD_PORT "9243" /* default security setting: use SSL */ #define ESODBC_DEF_SECURE "1" /* default cloud security setting: check revoke */ #define ESODBC_DEF_CLOUD_SECURE "4" /* default global request timeout (0: no timeout) */ #define ESODBC_DEF_TIMEOUT "0" /* don't follow redirection from the server */ #define ESODBC_DEF_FOLLOW "true" /* packing of REST bodies (JSON or CBOR) */ #define ESODBC_DEF_PACKING ESODBC_DSN_PACK_CBOR /* zlib compression of REST bodies (auto/true/false) */ #define ESODBC_DEF_COMPRESSION ESODBC_DSN_CMPSS_AUTO /* default tracing activation */ #define ESODBC_DEF_TRACE_ENABLED "0" /* default tracing level */ #define ESODBC_DEF_TRACE_LEVEL "WARN" /* default TZ handling */ #define ESODBC_DEF_APPLY_TZ "false" /* default early execution flag */ #define ESODBC_DEF_EARLY_EXEC "true" /* default of scientific floats printing */ #define ESODBC_DEF_SCI_FLOATS ESODBC_DSN_FLTS_DEF #define ESODBC_PWD_VAL_SUBST "<redacted>" #define ESODBC_DEF_MFIELD_LENIENT "true" #define ESODBC_DEF_ESC_PVA "true" #define ESODBC_DEF_IDX_INC_FROZEN "false" #define ESODBC_DEF_VARCHAR_LIMIT "0" #define ESODBC_DEF_PROXY_ENABLED "false" #define ESODBC_DEF_PROXY_AUTH_ENA "false" /* * * Driver/Elasticsearch capabilities (SQLGetInfo) * */ /* What level of SQL92 grammar is supported? * Note: minimum (entry) level includes DISTINCT. * Intermediate sql1992.txt "Leveling Rules" enforces rules I'm not sure we * respect yet (ex., see CURRENT_ functions). */ #define ESODBC_SQL_CONFORMANCE SQL_SC_SQL92_ENTRY /* Driver conformance level: CORE. * No scrollabe cursors et al. just yet. * https://docs.microsoft.com/en-us/sql/odbc/reference/develop-app/interface-conformance-levels */ #define ESODBC_ODBC_INTERFACE_CONFORMANCE SQL_OIC_CORE #define ESODBC_GETDATA_EXTENSIONS (0 | \ SQL_GD_ANY_COLUMN | SQL_GD_ANY_ORDER | SQL_GD_BOUND) /* * Deprecated info types. */ #define ESODBC_FETCH_DIRECTION SQL_FD_FETCH_NEXT #define ESODBC_POS_OPERATIONS 0L #define ESODBC_LOCK_TYPES 0L #define ESODBC_POSITIONED_STATEMENTS 0L /* equivalent to ESODBC_ODBC_INTERFACE_CONFORMANCE above */ #define ESODBC_ODBC_API_CONFORMANCE SQL_OAC_LEVEL1 #define ESODBC_SCROLL_CONCURRENCY SQL_SCCO_READ_ONLY /* equivalent to ESODBC_SQL_CONFORMANCE above */ #define ESODBC_ODBC_SQL_CONFORMANCE SQL_OSC_MINIMUM //#define ESODBC_ODBC_SQL_CONFORMANCE SQL_OSC_CORE #define ESODBC_STATIC_SENSITIVITY 0L /* * Catalog support: * - supported in: DML STATEMENTS, ODBC PROCEDURE INVOCATION. * - not supported in: TABLE/INDEX/PRIVILEGE DEFINITION. */ #define ESODBC_CATALOG_USAGE (0 | \ SQL_CU_DML_STATEMENTS | SQL_CU_PROCEDURE_INVOCATION) /* what's allowed in an identifier name (eg. table, column, index) except * [a-zA-Z0-9_], accepted in a delimited specification. */ #define ESODBC_SPECIAL_CHARACTERS " !\"#$%&'()*+,-./" /*[0-9]*/ \ ";<=>?@" /*[A-Z]*/ "[\\]^" /*[_]*/ "`" /*[a-z]*/ "{|}~" /* SQLFetchScroll() and SQLSetPos() capabilities. * TODO: SQL_CA1_BULK_FETCH_BY_BOOKMARK: pending bookmarks */ #define ESODBC_FORWARD_ONLY_CURSOR_ATTRIBUTES1 (0 | \ SQL_CA1_NEXT | \ SQL_CA1_LOCK_NO_CHANGE ) /* tho SQLSetPos() not really supported */ #define ESODBC_FORWARD_ONLY_CURSOR_ATTRIBUTES2 (0 | \ SQL_CA2_READ_ONLY_CONCURRENCY | \ SQL_CA2_SIMULATE_NON_UNIQUE ) /* tho no update/delete supported */ /* * SELECT predicates: * - supported: BETWEEN, COMPARISON, EXISTS, IN, ISNOTNULL, ISNULL, LIKE. * - not supported: MATCH FULL/PARTIAL, MATCH UNIQUE FULL/PARTIAL, OVERLAPS, * QUANTIFIED COMPARISON, UNIQUE. */ #define ESODBC_SQL92_PREDICATES (0 | \ SQL_SP_BETWEEN | SQL_SP_COMPARISON | SQL_SP_EXISTS | SQL_SP_IN | \ SQL_SP_ISNOTNULL | SQL_SP_ISNULL | SQL_SP_LIKE) /* * No JOIN support. */ #define ESODBC_SQL92_RELATIONAL_JOIN_OPERATORS 0LU /* * String functions support: * - supported: ASCII, BIT_LENGTH, CHAR, CHAR_LENGTH, CHARACTER_LENGTH, * CONCAT, INSERT, LCASE, LEFT, LENGTH, LOCATE, LTRIM, OCTET_LENGTH, * POSITION, REPEAT, REPLACE, RIGHT, RTRIM, SPACE, SUBSTRING, UCASE. * - not supported: DIFFERENCE, SOUNDEX. */ #define ESODBC_STRING_FUNCTIONS (0LU | \ SQL_FN_STR_ASCII | SQL_FN_STR_BIT_LENGTH | SQL_FN_STR_CHAR | \ SQL_FN_STR_CHAR_LENGTH | SQL_FN_STR_CHARACTER_LENGTH | \ SQL_FN_STR_CONCAT | SQL_FN_STR_INSERT | SQL_FN_STR_LCASE | \ SQL_FN_STR_LEFT | SQL_FN_STR_LENGTH | SQL_FN_STR_LOCATE | \ SQL_FN_STR_LTRIM | SQL_FN_STR_OCTET_LENGTH | SQL_FN_STR_POSITION | \ SQL_FN_STR_REPEAT | SQL_FN_STR_REPLACE | SQL_FN_STR_RIGHT | \ SQL_FN_STR_RTRIM | SQL_FN_STR_SPACE | SQL_FN_STR_SUBSTRING | \ SQL_FN_STR_UCASE) /* * Numeric functions support: * - supported: ABS, ACOS, ASIN, ATAN, ATAN2, CEIL, COS, COT, DEGREES, EXP, * FLOOR, LOG, LOG10, MOD, PI, POWER, RADIANS, RAND, ROUND, SIGN, SIN, SQRT, * TAN, TRUNCATE; * - not supported: none. */ #define ESODBC_NUMERIC_FUNCTIONS (0LU | \ SQL_FN_NUM_ABS | SQL_FN_NUM_ACOS | SQL_FN_NUM_ASIN | SQL_FN_NUM_ATAN |\ SQL_FN_NUM_ATAN2 | SQL_FN_NUM_CEILING | SQL_FN_NUM_COS | \ SQL_FN_NUM_COT | SQL_FN_NUM_DEGREES | SQL_FN_NUM_EXP | \ SQL_FN_NUM_FLOOR | SQL_FN_NUM_LOG | SQL_FN_NUM_LOG10 | \ SQL_FN_NUM_MOD | SQL_FN_NUM_PI | SQL_FN_NUM_POWER | \ SQL_FN_NUM_RADIANS | SQL_FN_NUM_RAND | SQL_FN_NUM_ROUND | \ SQL_FN_NUM_SIGN | SQL_FN_NUM_SIN | SQL_FN_NUM_SQRT | SQL_FN_NUM_TAN | \ SQL_FN_NUM_TRUNCATE) /* * Timedate functions support: * - supported: DAYNAME, DAYOFMONTH, DAYOFWEEK, DAYOFYEAR, EXTRACT, HOUR, * MINUTE, MONTH, MONTHNAME, QUARTER, SECOND, WEEK, YEAR, NOW, * CURRENT_TIMESTAMP, CURRENT_DATE, CURDATE, CURRENT_TIME, CURTIME, * TIMESTAMPADD, TIMESTAMPDIFF; * - not supported: none. */ #define ESODBC_TIMEDATE_FUNCTIONS (0LU | \ SQL_FN_TD_DAYNAME | SQL_FN_TD_DAYOFMONTH | SQL_FN_TD_DAYOFWEEK | \ SQL_FN_TD_DAYOFYEAR | SQL_FN_TD_EXTRACT | SQL_FN_TD_HOUR | \ SQL_FN_TD_MINUTE | SQL_FN_TD_MONTH | SQL_FN_TD_MONTHNAME | \ SQL_FN_TD_QUARTER | SQL_FN_TD_SECOND | SQL_FN_TD_WEEK | \ SQL_FN_TD_YEAR | SQL_FN_TD_NOW | SQL_FN_TD_CURRENT_TIMESTAMP | \ SQL_FN_TD_CURDATE | SQL_FN_TD_CURRENT_DATE | SQL_FN_TD_CURRENT_TIME | \ SQL_FN_TD_CURTIME | SQL_FN_TD_TIMESTAMPADD | SQL_FN_TD_TIMESTAMPDIFF) /* * TIMESTAMPDIFF timestamp intervals: * - supported: FRAC_SECOND, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, * QUARTER, YEAR; * - not supported: none. */ #define ESODBC_TIMEDATE_DIFF_INTERVALS (0LU | \ SQL_FN_TSI_DAY | SQL_FN_TSI_FRAC_SECOND | SQL_FN_TSI_HOUR | \ SQL_FN_TSI_MINUTE | SQL_FN_TSI_MONTH | SQL_FN_TSI_QUARTER | \ SQL_FN_TSI_SECOND | SQL_FN_TSI_WEEK | SQL_FN_TSI_YEAR) /* * TIMESTAMPADD timestamp intervals: * - supported: FRAC_SECOND, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, * QUARTER, YEAR; * - not supported: none. */ #define ESODBC_TIMEDATE_ADD_INTERVALS (0LU | \ SQL_FN_TSI_DAY | SQL_FN_TSI_FRAC_SECOND | SQL_FN_TSI_HOUR | \ SQL_FN_TSI_MINUTE | SQL_FN_TSI_MONTH | SQL_FN_TSI_QUARTER | \ SQL_FN_TSI_SECOND | SQL_FN_TSI_WEEK | SQL_FN_TSI_YEAR) /* * System functions: * - supported: DATABASE, IFNULL, USER. * - not supported: none. */ #define ESODBC_SYSTEM_FUNCTIONS (0LU | \ SQL_FN_SYS_USERNAME | SQL_FN_SYS_DBNAME | SQL_FN_SYS_IFNULL) /* * Convert functions support: * - supported: CAST, CONVERT. * - not supported: none. */ #define ESODBC_CONVERT_FUNCTIONS (0LU | \ SQL_FN_CVT_CONVERT | SQL_FN_CVT_CAST) /* * Aggregate functions support: * - supported: ALL, AVG, COUNT, MAX, MIN, SUM. * - not supported: DISTINCT. */ #define ESODBC_AGGREGATE_FUNCTIONS (0LU | \ SQL_AF_ALL | SQL_AF_AVG | SQL_AF_COUNT | SQL_AF_MAX | SQL_AF_MIN | \ SQL_AF_SUM) /*** SQL92 support ***/ /* * SQL92 string functions: * - supported: none. * - not supported: CONVERT, LOWER, UPPER, SUBSTRING, TRANSLATE, TRIM, trim * leading, trim trailing */ #define ESODBC_SQL92_STRING_FUNCTIONS 0LU /* * SQL92 numeric value functions: * - supported: none. * - not supported: BIT_LENGTH, CHAR_LENGTH, CHARACTER_LENGTH, EXTRACT, * OCTET_LENGTH, POSITION */ #define ESODBC_SQL92_NUMERIC_VALUE_FUNCTIONS 0LU /* * SQL92 datetime functions: * - supported: CURRENT_DATE, CURRENT_DATETIME, CURRENT_TIME. * - not supported: none. */ #define ESODBC_SQL92_DATETIME_FUNCTIONS (0LU | \ SQL_SDF_CURRENT_TIMESTAMP | SQL_SDF_CURRENT_DATE | SQL_SDF_CURRENT_TIME) /* * SQL92 datetime literals support: * - supported: TIMESTAMP, DATE, TIME, INTERVAL: YEAR/MONTH/DAY/HOUR/MINUTE/ * SECOND/YEAR_TO_MONTH/DAY_TO_HOUR/DAY_TO_MINUTE/DAY_TO_SECOND/ * HOUR_TO_MINUTE/HOUR_TO_SECOND/MINUTE_TO_SECOND. * - not supported: none. */ #define ESODBC_DATETIME_LITERALS (0LU | \ SQL_DL_SQL92_TIMESTAMP | \ SQL_DL_SQL92_DATE | \ SQL_DL_SQL92_TIME | \ SQL_DL_SQL92_INTERVAL_YEAR | \ SQL_DL_SQL92_INTERVAL_MONTH | \ SQL_DL_SQL92_INTERVAL_DAY | \ SQL_DL_SQL92_INTERVAL_HOUR | \ SQL_DL_SQL92_INTERVAL_MINUTE | \ SQL_DL_SQL92_INTERVAL_SECOND | \ SQL_DL_SQL92_INTERVAL_YEAR_TO_MONTH | \ SQL_DL_SQL92_INTERVAL_DAY_TO_HOUR | \ SQL_DL_SQL92_INTERVAL_DAY_TO_MINUTE | \ SQL_DL_SQL92_INTERVAL_DAY_TO_SECOND | \ SQL_DL_SQL92_INTERVAL_HOUR_TO_MINUTE | \ SQL_DL_SQL92_INTERVAL_HOUR_TO_SECOND | \ SQL_DL_SQL92_INTERVAL_MINUTE_TO_SECOND ) /* * SQL92 value functions: * - supported: CASE, CAST, COALESCE, NULLIF * - not supported: none. */ #define ODBC_SQL92_VALUE_EXPRESSIONS (0LU | \ SQL_SVE_CASE | SQL_SVE_CAST | SQL_SVE_COALESCE | SQL_SVE_NULLIF) /* * ES specific data types */ #define ESODBC_SQL_BOOLEAN 16 #define ESODBC_SQL_GEO 114 #define ESODBC_SQL_NULL 0 #define ESODBC_SQL_UNSUPPORTED 1111 #define ESODBC_SQL_OBJECT 2002 #define ESODBC_SQL_NESTED 2002 /* the SQL type ES/SQL uses for string types (KEYWORD, TEXT), * plus IP, VERSION and GEO */ #define ESODBC_SQL_VARCHAR SQL_VARCHAR /* C SQL and SQL types for ES types that * - contain UTF8 chars */ #define ES_WVARCHAR_CSQL SQL_C_WCHAR #define ES_WVARCHAR_SQL SQL_WVARCHAR /* - contain ANSI chars */ #define ES_VARCHAR_CSQL SQL_C_CHAR #define ES_VARCHAR_SQL SQL_VARCHAR /* * ES-to-C-SQL mappings. * DATA_TYPE(SYS TYPES) : SQL_<type> -> SQL_C_<type> * Intervals not covered, since C==SQL, with no ES customization. */ /* -6: BYTE */ #define ES_BYTE_TO_CSQL SQL_C_TINYINT #define ES_BYTE_TO_SQL SQL_TINYINT /* 5: SHORT */ #define ES_SHORT_TO_CSQL SQL_C_SSHORT #define ES_SHORT_TO_SQL SQL_SMALLINT /* 4: INTEGER */ #define ES_INTEGER_TO_CSQL SQL_C_SLONG #define ES_INTEGER_TO_SQL SQL_INTEGER /* -5: LONG */ #define ES_LONG_TO_CSQL SQL_C_SBIGINT #define ES_LONG_TO_SQL SQL_BIGINT /* 2: UNSIGNED_LONG */ #define ES_ULONG_TO_CSQL SQL_C_UBIGINT #define ES_ULONG_TO_SQL SQL_BIGINT /* 6: HALF_FLOAT */ #define ES_HALF_TO_CSQL_FLOAT SQL_C_DOUBLE #define ES_HALF_TO_SQL_FLOAT SQL_FLOAT /* 7: FLOAT */ #define ES_FLOAT_TO_CSQL SQL_C_FLOAT #define ES_FLOAT_TO_SQL SQL_REAL /* 8: DOUBLE */ #define ES_DOUBLE_TO_CSQL SQL_C_DOUBLE #define ES_DOUBLE_TO_SQL SQL_DOUBLE /* 8: SCALED_FLOAT */ #define ES_SCALED_TO_CSQL_FLOAT SQL_C_DOUBLE #define ES_SCALED_TO_SQL_FLOAT SQL_DOUBLE /* 16: BOOLEAN */ #define ES_BOOLEAN_TO_CSQL SQL_C_BIT /* BOOLEAN is used in catalog calls (like SYS TYPES / SQLGetTypeInfo), and the * data type is piped through to the app (just like with any other statement), * which causes issues, since it's not a standard type => use ODBC's SQL_BIT */ #define ES_BOOLEAN_TO_SQL SQL_BIT /* 12: KEYWORD */ #define ES_KEYWORD_TO_CSQL ES_WVARCHAR_CSQL #define ES_KEYWORD_TO_SQL ES_WVARCHAR_SQL /* 12: TEXT */ #define ES_TEXT_TO_CSQL ES_WVARCHAR_CSQL #define ES_TEXT_TO_SQL ES_WVARCHAR_SQL /* 12: IP */ #define ES_IP_TO_CSQL ES_VARCHAR_CSQL #define ES_IP_TO_SQL ES_VARCHAR_SQL /* 12: VERSION */ #define ES_VERSION_TO_CSQL ES_VARCHAR_CSQL #define ES_VERSION_TO_SQL ES_VARCHAR_SQL /* 92: TIME */ #define ES_TIME_TO_CSQL SQL_C_TYPE_TIME #define ES_TIME_TO_SQL SQL_TYPE_TIME /* 91: DATE */ #define ES_DATE_TO_CSQL SQL_C_TYPE_DATE #define ES_DATE_TO_SQL SQL_TYPE_DATE /* 93: DATETIME (TIMESTAMP) */ #define ES_DATETIME_TO_CSQL SQL_C_TYPE_TIMESTAMP #define ES_DATETIME_TO_SQL SQL_TYPE_TIMESTAMP /* -3: BINARY */ #define ES_BINARY_TO_CSQL SQL_C_BINARY #define ES_BINARY_TO_SQL SQL_BINARY /* 0: NULL */ /* there's no standard C SQL ID for a NULL type (but there's a SQL one); so * map it to a valid C SQL ID (though it should actually be used). */ #define ES_NULL_TO_CSQL SQL_C_STINYINT #define ES_NULL_TO_SQL SQL_TYPE_NULL /* * ES-non mappable */ /* 114: GEO_POINT/_SHAPE, SHAPE */ #define ES_GEO_TO_CSQL ES_VARCHAR_CSQL /* WKT encodings */ #define ES_GEO_TO_SQL ES_VARCHAR_SQL /* 1111: UNSUPPORTED */ #define ES_UNSUPPORTED_TO_CSQL SQL_C_BINARY #define ES_UNSUPPORTED_TO_SQL ESODBC_SQL_UNSUPPORTED /* 2002: OBJECT */ #define ES_OBJECT_TO_CSQL SQL_C_BINARY #define ES_OBJECT_TO_SQL ESODBC_SQL_OBJECT /* 2002: NESTED */ #define ES_NESTED_TO_CSQL SQL_C_BINARY #define ES_NESTED_TO_SQL ESODBC_SQL_NESTED #endif /* __DEFS_H__ */ /* vim: set noet fenc=utf-8 ff=dos sts=0 sw=4 ts=4 tw=78 : */