]> granicus.if.org Git - postgresql/commitdiff
Incorporate fixes from Date and Darwen, 1997.
authorThomas G. Lockhart <lockhart@fourpalms.org>
Fri, 18 Jun 1999 05:03:48 +0000 (05:03 +0000)
committerThomas G. Lockhart <lockhart@fourpalms.org>
Fri, 18 Jun 1999 05:03:48 +0000 (05:03 +0000)
Did not check the function declarations as carefully as the other parts,
 though all of the function names *do* match up with D&D.

src/interfaces/cli/sqlcli.h

index 7bfa0fb42f698032c533aeabc5ad85bf3d148563..243a7cbe2b2569ee93c3481db8bf06e05d792fa1 100644 (file)
@@ -6,6 +6,10 @@
  * This file is adapted for PostgreSQL
  * from the SQL98 August 1994 draft standard.
  * Thomas G. Lockhart 1999-06-16
+ *
+ * Updated from Date and Darwen, 1997, with some definitions
+ * not in the SQL3 August 1994 draft standard
+ * - Thomas Lockhart 1999-06-17
  */
 
 /* API declaration data types */
@@ -49,14 +53,17 @@ typedef SQLINTEGER      SQLHDESC;   /* descriptor handle */
 #define SQL_NTS                   -3
 #define SQL_NTSL                  -3L
 
-/* maximum message length */
-#define SQL_MAX_MESSAGE_LENGTH   255
+/* maximum message length from Date and Darwen
+ * was 255 in the August 1994 draft standard
+ * - Thomas Lockhart 1999-06-17
+ */
+#define SQL_MAX_MESSAGE_LENGTH   512
 
 /* maximum identifier length */
 #define SQL_MAX_ID_LENGTH         18
 
 /* date/time length constants */
-/* add p+1 for time and timestamp if precision is nonzero
+/* add p+1 for time and timestamp if precision is nonzero */
 #define SQL_DATE_LEN              10
 #define SQL_TIME_LEN               8
 #define SQL_TIMESTAMP_LEN         19
@@ -74,226 +81,390 @@ typedef SQLINTEGER      SQLHDESC;   /* descriptor handle */
 #define SQL_ATTR_AUTO_IPD      10001
 
 /* statement attributes */
-#define SQL_ATTR_APP_ROW_DESC    10010
-#define SQL_ATTR_APP_PARAM_DESC  10011
-#define SQL_ATTR_IMP_ROW_DESC    10012
-#define SQL_ATTR_IMP_PARAM_DESC  10013
+#define SQL_ATTR_APP_ROW_DESC        10010
+#define SQL_ATTR_APP_PARAM_DESC      10011
+#define SQL_ATTR_IMP_ROW_DESC        10012
+#define SQL_ATTR_IMP_PARAM_DESC      10013
+#define SQL_ATTR_CURSOR_SCROLLABLE      -1
+#define SQL_ATTR_CURSOR_SENSITIVITY     -2
 
 /* identifiers of fields in the SQL descriptor */
-#define SQL_DESC_COUNT             1
-#define SQL_DESC_TYPE              2
-#define SQL_DESC_LENGTH            3
-#define SQL_DESC_LENGTH_PTR        4
-#define SQL_DESC_PRECISION         5
-#define SQL_DESC_SCALE             6
-#define SQL_DESC_DATETIME_INTERVAL_CODE 7
-#define SQL_DESC_NULLABLE          8
-#define SQL_DESC_INDICATOR_PTR     9
-#define SQL_DESC_DATA_PTR         10
-#define SQL_DESC_NAME             11
-#define SQL_DESC_UNNAMED          12
-#define SQL_DESC_ALLOC_TYPE       99
+/* These ran 1-99 in the August 1994 draft standard
+ * - Thomas Lockhart 1999-06-17
+ */
+#define SQL_DESC_COUNT                        1001
+#define SQL_DESC_TYPE                         1002
+#define SQL_DESC_LENGTH                       1003
+#define SQL_DESC_OCTET_LENGTH_POINTER         1004
+#define SQL_DESC_PRECISION                    1005
+#define SQL_DESC_SCALE                        1006
+#define SQL_DESC_DATETIME_INTERVAL_CODE       1007
+#define SQL_DESC_NULLABLE                     1008
+#define SQL_DESC_INDICATOR_POINTER            1009
+#define SQL_DESC_DATA_POINTER                 1010
+#define SQL_DESC_NAME                         1011
+#define SQL_DESC_UNNAMED                      1012
+#define SQL_DESC_OCTET_LENGTH                 1013
+#define SQL_DESC_DATETIME_INTERVAL_PRECISION  1014
+#define SQL_DESC_COLLATION_CATALOG            1015
+#define SQL_DESC_COLLATION_SCHEMA             1016
+#define SQL_DESC_COLLATION_NAME               1017
+#define SQL_DESC_CHARACTER_SET_CATALOG        1018
+#define SQL_DESC_CHARACTER_SET_SCHEMA         1019
+#define SQL_DESC_CHARACTER_SET_NAME           1020
+#define SQL_DESC_PARAMETER_MODE               1021
+#define SQL_DESC_PARAMETER_ORDINAL_POSITION   1022
+#define SQL_DESC_PARAMETER_SPECIFIC_CATALOG   1023
+#define SQL_DESC_PARAMETER_SPECIFIC_SCHEMA    1024
+#define SQL_DESC_PARAMETER_SPECIFIC_NAME      1025
+#define SQL_DESC_ALLOC_TYPE                   1099
 
 /* identifiers of fields in the diagnostics area */
-#define SQL_DIAG_RETURNCODE        1
-#define SQL_DIAG_NUMBER            2
-#define SQL_DIAG_ROW_COUNT         3
-#define SQL_DIAG_SQLSTATE          4
-#define SQL_DIAG_NATIVE            5
-#define SQL_DIAG_MESSAGE_TEXT      6
-#define SQL_DIAG_DYNAMIC_FUNCTION  7
-#define SQL_DIAG_CLASS_ORIGIN      8
-#define SQL_DIAG_SUBCLASS_ORIGIN   9
-#define SQL_DIAG_CONNECTION_NAME  10
-#define SQL_DIAG_SERVER_NAME      11
-#define SQL_DIAG_DYNAMIC_FUNCTION_CODE 12
-
-/* dynamic function codes returned in diagnostics area*/
-#define SQL_DIAG_ALTER_DOMAIN                3
-#define SQL_DIAG_ALTER_TABLE                 4
-#define SQL_DIAG_CREATE_ASSERTION            6
-#define SQL_DIAG_CREATE_CHARACTER_SET        8
-#define SQL_DIAG_CREATE_COLLATION           10
-#define SQL_DIAG_CREATE_DOMAIN              23
-#define SQL_DIAG_CREATE_SCHEMA              64
-#define SQL_DIAG_CREATE_TABLE               77
-#define SQL_DIAG_CREATE_TRANSLATION         79
-#define SQL_DIAG_CREATE_VIEW                84
-#define SQL_DIAG_DELETE_WHERE               19
-#define SQL_DIAG_DROP_ASSERTION             24
-#define SQL_DIAG_DROP_CHARACTER_SET         25
-#define SQL_DIAG_DROP_COLLATION             26
-#define SQL_DIAG_DROP_DOMAIN                27
-#define SQL_DIAG_DROP_SCHEMA                31
-#define SQL_DIAG_DROP_TABLE                 32
-#define SQL_DIAG_DROP_TRANSLATION           33
-#define SQL_DIAG_DROP_VIEW                  36
-#define SQL_DIAG_DYNAMIC_DELETE_CURSOR      54
-#define SQL_DIAG_DYNAMIC_UPDATE_CURSOR      55
-#define SQL_DIAG_GRANT                      48
-#define SQL_DIAG_INSERT                     50
-#define SQL_DIAG_REVOKE                     59
-#define SQL_DIAG_SELECT                     41
-#define SQL_DIAG_SELECT_CURSOR              85
-#define SQL_DIAG_SET_CATALOG                66
-#define SQL_DIAG_SET_CONSTRAINT             68
-#define SQL_DIAG_SET_NAMES                  72
-#define SQL_DIAG_SET_SCHEMA                 74
-#define SQL_DIAG_SET_SESSION_AUTHORIZATION  76
-#define SQL_DIAG_SET_TIME_ZONE              71
-#define SQL_DIAG_SET_TRANSACTION            75
-#define SQL_DIAG_UNKNOWN_STATEMENT           0
-#define SQL_DIAG_UPDATE_WHERE               82
+/* Many new definitions since August 1994 draft standard
+ * - Thomas Lockhart 1999-06-17
+ */
+#define SQL_DIAG_RETURNCODE                      1
+#define SQL_DIAG_NUMBER                          2
+#define SQL_DIAG_ROW_COUNT                       3
+#define SQL_DIAG_SQLSTATE                        4
+#define SQL_DIAG_NATIVE                          5
+#define SQL_DIAG_MESSAGE_TEXT                    6
+#define SQL_DIAG_DYNAMIC_FUNCTION                7
+#define SQL_DIAG_CLASS_ORIGIN                    8
+#define SQL_DIAG_SUBCLASS_ORIGIN                 9
+#define SQL_DIAG_CONNECTION_NAME                10
+#define SQL_DIAG_SERVER_NAME                    11
+#define SQL_DIAG_DYNAMIC_FUNCTION_CODE          12
+#define SQL_DIAG_MORE                           13
+#define SQL_DIAG_CONDITION_NUMBER               14
+#define SQL_DIAG_CONSTRAINT_CATALOG             15
+#define SQL_DIAG_CONSTRAINT_SCHEMA              16
+#define SQL_DIAG_CONSTRAINT_NAME                17
+#define SQL_DIAG_CATALOG_NAME                   18
+#define SQL_DIAG_SCHEMA_NAME                    19
+#define SQL_DIAG_TABLE_NAME                     20
+#define SQL_DIAG_COLUMN_NAME                    21
+#define SQL_DIAG_CURSOR_NAME                    22
+#define SQL_DIAG_MESSAGE_LENGTH                 23
+#define SQL_DIAG_MESSAGE_OCTET_LENGTH           24
+
+/* dynamic function codes returned in diagnostics area */
+#define SQL_DIAG_ALTER_DOMAIN                    3
+#define SQL_DIAG_ALTER_TABLE                     4
+#define SQL_DIAG_CREATE_ASSERTION                6
+#define SQL_DIAG_CREATE_CHARACTER_SET            8
+#define SQL_DIAG_CREATE_COLLATION               10
+#define SQL_DIAG_CREATE_DOMAIN                  23
+#define SQL_DIAG_CREATE_SCHEMA                  64
+#define SQL_DIAG_CREATE_TABLE                   77
+#define SQL_DIAG_CREATE_TRANSLATION             79
+#define SQL_DIAG_CREATE_VIEW                    84
+#define SQL_DIAG_DELETE_WHERE                   19
+#define SQL_DIAG_DROP_ASSERTION                 24
+#define SQL_DIAG_DROP_CHARACTER_SET             25
+#define SQL_DIAG_DROP_COLLATION                 26
+#define SQL_DIAG_DROP_DOMAIN                    27
+#define SQL_DIAG_DROP_SCHEMA                    31
+#define SQL_DIAG_DROP_TABLE                     32
+#define SQL_DIAG_DROP_TRANSLATION               33
+#define SQL_DIAG_DROP_VIEW                      36
+#define SQL_DIAG_DYNAMIC_DELETE_CURSOR          54
+#define SQL_DIAG_DYNAMIC_UPDATE_CURSOR          55
+#define SQL_DIAG_GRANT                          48
+#define SQL_DIAG_INSERT                         50
+#define SQL_DIAG_REVOKE                         59
+#define SQL_DIAG_SELECT                         41
+#define SQL_DIAG_SELECT_CURSOR                  85
+#define SQL_DIAG_SET_CATALOG                    66
+#define SQL_DIAG_SET_CONSTRAINT                 68
+#define SQL_DIAG_SET_NAMES                      72
+#define SQL_DIAG_SET_SCHEMA                     74
+#define SQL_DIAG_SET_SESSION_AUTHORIZATION      76
+#define SQL_DIAG_SET_TIME_ZONE                  71
+#define SQL_DIAG_SET_TRANSACTION                75
+#define SQL_DIAG_UNKNOWN_STATEMENT               0
+#define SQL_DIAG_UPDATE_WHERE                   82
 
 /* SQL data type codes */
-#define SQL_CHAR         1
-#define SQL_NUMERIC      2
-#define SQL_DECIMAL      3
-#define SQL_INTEGER      4
-#define SQL_SMALLINT     5
-#define SQL_FLOAT        6
-#define SQL_REAL         7
-#define SQL_DOUBLE       8
-#define SQL_DATETIME     9
-#define SQL_INTERVAL    10
-#define SQL_VARCHAR     12
-#define SQL_BIT         14
-#define SQL_BIT_VARYING 15
-
-/*      One-parameter shortcuts for datetime data types         */
-#define         SQL_TYPE_DATE           91
-#define         SQL_TYPE_TIME           92
-#define         SQL_TYPE_TIMESTAMP      93
-
-/*      GetTypeInfo request for all data types  */
-#define         SQL_ALL_TYPES   0
+#define SQL_CHAR          1
+#define SQL_NUMERIC       2
+#define SQL_DECIMAL       3
+#define SQL_INTEGER       4
+#define SQL_SMALLINT      5
+#define SQL_FLOAT         6
+#define SQL_REAL          7
+#define SQL_DOUBLE        8
+#define SQL_DATETIME      9
+#define SQL_INTERVAL     10
+#define SQL_VARCHAR      12
+#define SQL_BIT          14
+#define SQL_BIT_VARYING  15
+
+/* One-parameter shortcuts for datetime data types */
+#define SQL_TYPE_DATE                      91
+#define SQL_TYPE_TIME                      92
+#define SQL_TYPE_TIME_WITH_TIMEZONE        93
+#define SQL_TYPE_TIMESTAMP                 94
+#define SQL_TYPE_TIMESTAMP_WITH_TIMEZONE   95
+#define SQL_INTERVAL_DAY                  103
+#define SQL_INTERVAL_DAY_TO_HOUR          108
+#define SQL_INTERVAL_DAY_TO_MINUTE        109
+#define SQL_INTERVAL_DAY_TO_SECOND        110
+#define SQL_INTERVAL_HOUR                 104
+#define SQL_INTERVAL_HOUR_TO_MINUTE       111
+#define SQL_INTERVAL_HOUR_TO_SECOND       112
+#define SQL_INTERVAL_MINUTE               105
+#define SQL_INTERVAL_MINUTE_TO_SECOND     113
+#define SQL_INTERVAL_MONTH                102
+#define SQL_INTERVAL_SECOND               106
+#define SQL_INTERVAL_YEAR                 101
+#define SQL_INTERVAL_YEAR_TO_MONTH        107
+
+/* GetTypeInfo request for all data types */
+#define SQL_ALL_TYPES            0
 
 /* BindCol()  and BindParam() default conversion code */
-#define SQL_DEFAULT     99
+#define SQL_DEFAULT             99
 
-/*      GetData code indicating that the application parameter */
-/*      descriptor specifies the data type */
-#define         SQL_ARD_TYPE            -99
+/* GetData code indicating that the application parameter */
+/* descriptor specifies the data type */
+#define SQL_ARD_TYPE           -99
 
 /* date/time type subcodes */
-#define SQL_CODE_DATE       1
-#define SQL_CODE_TIME       2
-#define SQL_CODE_TIMESTAMP  3
-#define SQL_CODE_TIME_ZONE  4
+#define SQL_CODE_DATE            1
+#define SQL_CODE_TIME            2
+#define SQL_CODE_TIMESTAMP       3
+#define SQL_CODE_TIME_ZONE       4
 #define SQL_CODE_TIMESTAMP_ZONE  5
 
 /* interval qualifier codes */
-#define SQL_DAY             1
-#define SQL_DAY_TO_HOUR     2
-#define SQL_DAY_TO_MINUTE   3
-#define SQL_DAY_TO_SECOND   4
-#define SQL_HOUR            5
-#define SQL_HOUR_TO_MINUTE  6
-#define SQL_HOUR_TO_SECOND  7
-#define SQL_MINUTE          8
-#define SQL_MINUTE_TO_SECOND 9
-#define SQL_MONTH          10
-#define SQL_SECOND         11
-#define SQL_YEAR           12
-#define SQL_YEAR_TO_MONTH  13
+#define SQL_DAY                  3
+#define SQL_DAY_TO_HOUR          8
+#define SQL_DAY_TO_MINUTE        9
+#define SQL_DAY_TO_SECOND       10
+#define SQL_HOUR                 4
+#define SQL_HOUR_TO_MINUTE      11
+#define SQL_HOUR_TO_SECOND      12
+#define SQL_MINUTE               5
+#define SQL_MINUTE_TO_SECOND    13
+#define SQL_MONTH                2
+#define SQL_SECOND               6
+#define SQL_YEAR                 1
+#define SQL_YEAR_TO_MONTH        7
 
 /* CLI option values */
-#define SQL_FALSE        0
-#define SQL_TRUE         1
+#define SQL_FALSE                0
+#define SQL_TRUE                 1
+#define SQL_NONSCROLLABLE        0
+#define SQL_SCROLLABLE           1
+
+/* parameter modes */
+#define SQL_PARAM_MODE_IN        1
+#define SQL_PARAM_MODE_OUT       4
+#define SQL_PARAM_MODE_INOUT     2
+#define SQL_PARAM_MODE_NONE      0
 
 /* values of NULLABLE field in descriptor */
-#define SQL_NO_NULLS     0
-#define SQL_NULLABLE     1
+#define SQL_NO_NULLS             0
+#define SQL_NULLABLE             1
 
-/*      Values returned by GetTypeInfo for the SEARCHABLE column        */
-#define         SQL_PRED_NONE   0
-#define         SQL_PRED_CHAR   1
-#define         SQL_PRED_BASIC  2
+/*      Values returned by GetTypeInfo for the SEARCHABLE column */
+#define SQL_PRED_NONE            0
+#define SQL_PRED_CHAR            1
+#define SQL_PRED_BASIC           2
 
 /* values of UNNAMED field in descriptor */
-#define SQL_NAMED        0
-#define SQL_UNNAMED      1
+#define SQL_NAMED                0
+#define SQL_UNNAMED              1
 
 /* values of ALLOC_TYPE field in descriptor */
-#define SQL_DESC_ALLOC_AUTO  1
-#define SQL_DESC_ALLOC_USER  2
+#define SQL_DESC_ALLOC_AUTO      1
+#define SQL_DESC_ALLOC_USER      2
 
 /* EndTran()  options */
-#define SQL_COMMIT       0
-#define SQL_ROLLBACK     1
+#define SQL_COMMIT               0
+#define SQL_ROLLBACK             1
 
 /* FreeStmt()  options */
-#define SQL_CLOSE        0
-#define SQL_DROP         1
-#define SQL_UNBIND       2
-#define SQL_RESET_PARAMS 3
-
-/* null handles returned by AllocHandle()  */
-#define SQL_NULL_HENV    0
-#define SQL_NULL_HDBC    0
-#define SQL_NULL_HSTMT   0
-#define SQL_NULL_HDESC   0
-
-/*      GetFunctions values to identify CLI routines    */
-#define         SQL_API_SQLALLOCCONNECT         1
-#define         SQL_API_SQLALLOCENV             2
-#define         SQL_API_SQLALLOCHANDLE          1001
-#define         SQL_API_SQLALLOCSTMT            3
-#define         SQL_API_SQLBINDCOL              4
-#define         SQL_API_SQLBINDPARAM            1002
-#define         SQL_API_SQLCANCEL               5
-#define         SQL_API_SQLCLOSECURSOR          1003
-#define         SQL_API_SQLCONNECT              7
-#define         SQL_API_SQLCOPYDESC             1004
-#define         SQL_API_SQLCOLATTRIBUTE         6
-#define         SQL_API_SQLDESCRIBECOL          8
-#define         SQL_API_SQLDISCONNECT           9
-#define         SQL_API_SQLENDTRAN              1005
-#define         SQL_API_SQLERROR                10
-#define         SQL_API_SQLEXECDIRECT           11
-#define         SQL_API_SQLEXECUTE              12
-#define         SQL_API_SQLFETCH                13
-#define         SQL_API_SQLFREECONNECT          14
-#define         SQL_API_SQLFREEENV              15
-#define         SQL_API_SQLFREEHANDLE           1006
-#define         SQL_API_SQLFREESTMT             16
-#define         SQL_API_SQLFUNCTIONS            44
-#define         SQL_API_SQLGETCONNECTATTR       1007
-#define         SQL_API_SQLGETCURSORNAME        17
-#define         SQL_API_SQLGETDATA              43
-#define         SQL_API_SQLGETDESCFIELD         1008
-#define         SQL_API_SQLGETDESCREC           1009
-#define         SQL_API_SQLGETDIAGFIELD         1010
-#define         SQL_API_SQLGETDIAGREC           1011
-#define         SQL_API_SQLGETENVATTR           1012
-#define         SQL_API_SQLGETINFO              45
-#define         SQL_API_SQLGETSTMTATTR          1014
-#define         SQL_API_SQLGETTYPEINFO          47
-#define         SQL_API_SQLNUMRESULTCOLS        18
-#define         SQL_API_SQLPARAMDATA            48
-#define         SQL_API_SQLPREPARE              19
-#define         SQL_API_SQLPUTDATA              49
-#define         SQL_API_SQLRELEASEENV           1015
-#define         SQL_API_SQLROWCOUNT             20
-#define         SQL_API_SQLSCROLLFETCH          1021
-#define         SQL_API_SQLSETCONNECTATTR       1016
-#define         SQL_API_SQLSETCURSORNAME        21
-#define         SQL_API_SQLSETDESCFIELD         1017
-#define         SQL_API_SQLSETDESCREC           1018
-#define         SQL_API_SQLSETENVATTR           1019
-#define         SQL_API_SQLSETSTMTATTR          1020
-
-/*      information requested by GetInfo        */
-#define         SQL_MAX_DRIVER_CONNECTIONS      0
-#define         SQL_MAX_RESULT_SETS             1
-#define         SQL_DBMS_NAME                   17
-#define         SQL_DBMS_VER                    18
-#define         SQL_MAX_COLUMN_NAME_LEN         30
-#define         SQL_MAX_CURSOR_NAME_LEN         31
-#define         SQL_MAX_TABLE_NAME_LEN          35
+#define SQL_CLOSE                0
+#define SQL_DROP                 1
+#define SQL_UNBIND               2
+#define SQL_RESET_PARAMS         3
+
+/* null handles returned by AllocHandle() */
+#define SQL_NULL_HENV            0
+#define SQL_NULL_HDBC            0
+#define SQL_NULL_HSTMT           0
+#define SQL_NULL_HDESC           0
+
+/* GetFunctions values to identify CLI routines */
+#define SQL_API_SQLALLOCCONNECT         1
+#define SQL_API_SQLALLOCENV             2
+#define SQL_API_SQLALLOCHANDLE       1001
+#define SQL_API_SQLALLOCSTMT            3
+#define SQL_API_SQLBINDCOL              4
+#define SQL_API_SQLBINDPARAM         1002
+#define SQL_API_SQLCANCEL               5
+#define SQL_API_SQLCLOSECURSOR       1003
+#define SQL_API_SQLCOLATTRIBUTE         6
+#define SQL_API_SQLCONNECT              7
+#define SQL_API_SQLCOPYDESC          1004
+#define SQL_API_SQLDATASOURCES         57
+#define SQL_API_SQLDESCRIBECOL          8
+#define SQL_API_SQLDISCONNECT           9
+#define SQL_API_SQLENDTRAN           1005
+#define SQL_API_SQLERROR               10
+#define SQL_API_SQLEXECDIRECT          11
+#define SQL_API_SQLEXECUTE             12
+#define SQL_API_SQLFETCH               13
+#define SQL_API_SQLFETCHSCROLL       1021
+#define SQL_API_SQLFREECONNECT         14
+#define SQL_API_SQLFREEENV             15
+#define SQL_API_SQLFREEHANDLE        1006
+#define SQL_API_SQLFREESTMT            16
+#define SQL_API_SQLGETCONNECTATTR    1007
+#define SQL_API_SQLGETCURSORNAME       17
+#define SQL_API_SQLGETDATA             43
+#define SQL_API_SQLGETDESCFIELD      1008
+#define SQL_API_SQLGETDESCREC        1009
+#define SQL_API_SQLGETDIAGFIELD      1010
+#define SQL_API_SQLGETDIAGREC        1011
+#define SQL_API_SQLGETENVATTR        1012
+#define SQL_API_SQLGETFUNCTIONS        44
+#define SQL_API_SQLGETINFO             45
+#define SQL_API_SQLGETSTMTATTR       1014
+#define SQL_API_SQLGETTYPEINFO         47
+#define SQL_API_SQLNUMRESULTCOLS       18
+#define SQL_API_SQLPARAMDATA           48
+#define SQL_API_SQLPREPARE             19
+#define SQL_API_SQLPUTDATA             49
+#define SQL_API_SQLRELEASEENV        1015  /* Obsolete? */
+#define SQL_API_SQLROWCOUNT            20
+#define SQL_API_SQLSCROLLFETCH       1021  /* Obsolete? */
+#define SQL_API_SQLSETCONNECTATTR    1016
+#define SQL_API_SQLSETCURSORNAME       21
+#define SQL_API_SQLSETDESCFIELD      1017
+#define SQL_API_SQLSETDESCREC        1018
+#define SQL_API_SQLSETENVATTR        1019
+#define SQL_API_SQLSETSTMTATTR       1020
+
+/* information requested by GetInfo */
+#define SQL_MAXIMUM_DRIVER_CONNECTIONS      0
+#define SQL_MAXIMUM_CONCURRENT_ACTIVITIES   1
+#define SQL_DATA_SOURCE_NAME                2
+#define SQL_FETCH_DIRECTION                 8
+#define SQL_SERVER_NAME                    13
+#define SQL_DBMS_NAME                      17
+#define SQL_DBMS_VERSION                   18
+#define SQL_CURSOR_COMMIT_BEHAVIOR         23
+#define SQL_DATA_SOURCE_READ_ONLY          25
+#define SQL_DEFAULT_TRANSACTION_ISOLATION  26
+#define SQL_IDENTIFIER_CASE                28
+#define SQL_MAXIMUM_COLUMN_NAME_LENGTH     30
+#define SQL_MAXIMUM_CURSOR_NAME_LENGTH     31
+#define SQL_MAXIMUM_SCHEMA_NAME_LENGTH     32
+#define SQL_MAXIMUM_CATALOG_NAME_LENGTH    34
+#define SQL_MAXIMUM_TABLE_NAME_LENGTH      35
+#define SQL_SCROLL_CONCURRENCY             43
+#define SQL_TRANSACTION_CAPABLE            46
+#define SQL_USER_NAME                      47
+#define SQL_TRANSACTION_ISOLATION_OPTION   72
+#define SQL_INTEGRITY                      73
+#define SQL_GETDATA_EXTENSIONS             81
+#define SQL_NULL_COLLATION                 85
+#define SQL_ALTER_TABLE                    86
+#define SQL_ORDER_BY_COLUMNS_IN_SELECT     90
+#define SQL_SPECIAL_CHARACTERS             94
+#define SQL_MAXIMUM_COLUMNS_IN_GROUP_BY    97
+#define SQL_MAXIMUM_COLUMNS_IN_ORDER_BY    99
+#define SQL_MAXIMUM_COLUMNS_IN_SELECT     100
+#define SQL_MAXIMUM_COLUMNS_IN_TABLE      101
+#define SQL_MAXIMUM_STATEMENT_LENGTH      105
+#define SQL_MAXIMUM_TABLES_IN_SELECT      106
+#define SQL_MAXIMUM_USER_NAME_LENGTH      107
+#define SQL_OUTER_JOIN_CAPABILITIES       115
+#define SQL_CURSOR_SENSITIVITY          10001
+#define SQL_DESCRIBE_PARAMETER          10002
+#define SQL_CATALOG_NAME                10003
+#define SQL_COLLATING_SEQUENCE          10004
+#define SQL_MAXIMUM_IDENTIFIER_LENGTH   10005
+
+/* S-resource attribute values for cursor sensitivity */
+#define SQL_UNSPECIFIED           0x00000000L
+#define SQL_INSENSITIVE           0x00000001L
 
 /* null handle used when allocating HENV */
-#define SQL_NULL_HANDLE  0L
+#define SQL_NULL_HANDLE                    0L
+
+/* SQL_ALTER_TABLE bitmasks */
+#define SQL_AT_ADD_COLUMN         0x00000001L
+#define SQL_AT_DROP_COLUMN        0x00000002L
+#define SQL_AT_ALTER_COLUMN       0x00000004L
+#define SQL_AT_ADD_CONSTRAINT     0x00000008L
+#define SQL_AT_DROP_CONSTRAINT    0x00000010L
+
+/* SQL_CURSOR_COMMIT_BEHAVIOR values */
+#define SQL_CB_DELETE                       0
+#define SQL_CB_CLOSE                        1
+#define SQL_CB_PRESERVE                     2
+
+/* SQL_FETCH_DIRECTION bitmasks */
+#define SQL_FD_FETCH_NEXT         0x00000001L
+#define SQL_FD_FETCH_FIRST        0x00000002L
+#define SQL_FD_FETCH_LAST         0x00000004L
+#define SQL_FD_FETCH_PRIOR        0x00000008L
+#define SQL_FD_FETCH_ABSOLUTE     0x00000010L
+#define SQL_FD_FETCH_RELATIVE     0x00000020L
+
+/* SQL_GETDATA_EXTENSIONS bitmasks */
+#define SQL_GD_ANY_COLUMN         0x00000001L
+#define SQL_FD_ANY_ORDER          0x00000002L
+
+/* SQL_IDENTIFIER_CASE values */
+#define SQL_IC_UPPER                        1
+#define SQL_IC_LOWER                        2
+#define SQL_IC_SENSITIVE                    3
+#define SQL_IC_MIXED                        4
+
+/* SQL_IDENTIFIER_CASE values */
+#define SQL_NC_HIGH                         1
+#define SQL_NC_LOW                          2
+
+/* SQL_OUTER_JOIN_CAPABILITIES bitmasks */
+#define SQL_OUTER_JOIN_LEFT                   0x00000001L
+#define SQL_OUTER_JOIN_RIGHT                  0x00000002L
+#define SQL_OUTER_JOIN_FULL                   0x00000004L
+#define SQL_OUTER_JOIN_NESTED                 0x00000008L
+#define SQL_OUTER_JOIN_NOT_ORDERED            0x00000010L
+#define SQL_OUTER_JOIN_INNER                  0x00000020L
+#define SQL_OUTER_JOIN_ALL_COMPARISION_OPS    0x00000040L
+
+/* SQL_SCROLL_CONCURRENCY bitmasks */
+#define SQL_SCCO_READ_ONLY                    0x00000001L
+#define SQL_SCCO_LOCK                         0x00000002L
+#define SQL_SCCO_OPT_ROWVER                   0x00000004L
+#define SQL_SCCO_OPT_VALUES                   0x00000008L
+
+/* SQL_IDENTIFIER_CASE values */
+#define SQL_TC_NONE                         0
+#define SQL_TC_DML                          1
+#define SQL_TC_ALL                          2
+#define SQL_TC_DDL_COMMIT                   3
+#define SQL_TC_DDL_IGNORE                   4
+
+/* SQL_TRANSACTION_ISOLATION bitmasks */
+#define SQL_TRANSACTION_READ_UNCOMMITTED      0x00000001L
+#define SQL_TRANSACTION_READ_COMMITTED        0x00000002L
+#define SQL_TRANSACTION_READ_REPEATABLE_READ  0x00000004L
+#define SQL_TRANSACTION_READ_SERIALIZABLE     0x00000008L
+
+
+
+#define SQL_TRANSACTION_READ_UNCOMMITTED    0x00000001L
+#define SQL_TRANSACTION_READ_UNCOMMITTED    0x00000001L
+#define SQL_FD_FETCH_NEXT         0x00000001L
+
+/* CLI function signatures */
 
 SQLRETURN  SQLAllocConnect(SQLHENV EnvironmentHandle,
                           SQLHDBC *ConnectionHandle);
@@ -304,7 +475,6 @@ SQLRETURN  SQLAllocHandle(SQLSMALLINT HandleType,
                          SQLINTEGER InputHandle,
                          SQLINTEGER *OutputHandle);
 
-
 SQLRETURN  SQLAllocStmt(SQLHDBC ConnectionHandle,
                          SQLSTMT *StatementHandle);
 
@@ -328,7 +498,7 @@ SQLRETURN  SQLCancel(SQLHSTMT StatementHandle);
 
 SQLRETURN  SQLCloseCursor(SQLHSTMT StatementHandle);
 
-SQLRETURN  SQLColAttribute(SQLHENV StatementHandle,
+SQLRETURN  SQLColAttribute(SQLHSTMT StatementHandle,
                           SQLSMALLINT ColumnNumber,
                           SQLSMALLINT FieldIdentifier,
                           SQLCHAR *CharacterAttribute,
@@ -336,7 +506,6 @@ SQLRETURN  SQLColAttribute(SQLHENV StatementHandle,
                           SQLINTEGER *AttributetLength,
                           SQLINTEGER *NumericAttribute);
 
-
 SQLRETURN  SQLConnect(SQLHDBC ConnectionHandle,
                      SQLCHAR *ServerName,
                      SQLSMALLINT NameLength1,
@@ -345,10 +514,18 @@ SQLRETURN  SQLConnect(SQLHDBC ConnectionHandle,
                      SQLCHAR *Authentication,
                      SQLSMALLINT NameLength3);
 
-
 SQLRETURN  SQLCopyDesc(SQLHDESC SourceDescHandle,
                       SQLHDESC TargetDescHandle);
 
+SQLRETURN  SQLDataSources(SQLHENV EnvironmentHandle,
+                         SQLSMALLINT Direction,
+                         SQLCHAR *ServerName,
+                         SQLSMALLINT BufferLength1,
+                         SQLSMALLINT *NameLength1,
+                         SQLCHAR *Description,
+                         SQLSMALLINT BufferLength2,
+                         SQLSMALLINT *NameLength2);
+
 SQLRETURN  SQLDescribeCol(SQLHSTMT StatementHandle,
                          SQLSMALLINT ColumnNumber,
                          SQLCHAR *ColumnName,
@@ -378,11 +555,14 @@ SQLRETURN  SQLExecDirect(SQLHSTMT StatementHandle,
                          SQLCHAR *StatementText,
                         SQLSMALLINT StringLength);
 
-
 SQLRETURN  SQLExecute(SQLHSTMT StatementHandle);
 
 SQLRETURN  SQLFetch(SQLHSTMT StatementHandle);
 
+SQLRETURN  SQLFetchScroll(SQLHSTMT StatementHandle,
+                         SQLSMALLINT FetchOrientation,
+                         SQLINTEGER FetchOffset);
+
 SQLRETURN  SQLFreeConnect(SQLHDBC ConnectionHandle);
 
 SQLRETURN  SQLFreeEnv(SQLHENV EnvironmentHandle);
@@ -398,7 +578,6 @@ SQLRETURN  SQLGetConnectAttr(SQLHDBC ConnectionHandle,
                             SQLINTEGER BufferLength,
                             SQLINTEGER *StringLength);
 
-
 SQLRETURN  SQLGetCursorName(SQLHSTMT StatementHandle,
                            SQLCHAR *CursorName,
                            SQLSMALLINT BufferLength,
@@ -411,19 +590,6 @@ SQLRETURN  SQLGetData(SQLHSTMT StatementHandle,
                      SQLINTEGER BufferLength,
                      SQLINTEGER *IndicatorValue);
 
-SQLRETURN  SQLGetFunctions(SQLHDBC ConnectionHandle,
-                          SQLSMALLINT FunctionId,
-                          SQLSMALLINT *Supported);
-
-SQLRETURN  SQLGetInfo(SQLHDBC ConnectionHandle,
-                     SQLSMALLINT InfoType,
-                     SQLPOINTER InfoValue,
-                     SQLSMALLINT BufferLength,
-                     SQLSMALLINT *StringLength);
-
-SQLRETURN  SQLGetTypeInfo(SQLHSTMT StatementHandle,
-                         SQLSMALLINT DataType);
-
 SQLRETURN  SQLGetDescField(SQLHDESC DescriptorHandle,
                           SQLSMALLINT RecordNumber,
                           SQLSMALLINT FieldIdentifier,
@@ -467,13 +633,24 @@ SQLRETURN  SQLGetEnvAttr(SQLHENV EnvironmentHandle,
                          SQLINTEGER BufferLength,
                         SQLINTEGER *StringLength);
 
+SQLRETURN  SQLGetFunctions(SQLHDBC ConnectionHandle,
+                          SQLSMALLINT FunctionId,
+                          SQLSMALLINT *Supported);
+
+SQLRETURN  SQLGetInfo(SQLHDBC ConnectionHandle,
+                     SQLSMALLINT InfoType,
+                     SQLPOINTER InfoValue,
+                     SQLSMALLINT BufferLength,
+                     SQLSMALLINT *StringLength);
+
 SQLRETURN  SQLGetStmtAttr(SQLHSTMT StatementHandle,
                          SQLINTEGER Attribute,
                          SQLPOINTER Value,
                          SQLINTEGER BufferLength,
                          SQLINTEGER *StringLength);
 
-SQLRETURN  SQLLanguages(SQLHSTMT StatementHandle);
+SQLRETURN  SQLGetTypeInfo(SQLHSTMT StatementHandle,
+                         SQLSMALLINT DataType);
 
 SQLRETURN  SQLNumResultCols(SQLHSTMT StatementHandle,
                            SQLINTEGER *ColumnCount);
@@ -490,15 +667,9 @@ SQLRETURN  SQLPutData(SQLHSTMT StatementHandle,
                      SQLPOINTER Data,
                      SQLINTEGER StringLength);
 
-SQLRETURN  SQLReleaseEnv(SQLHENV EnvironmentHandle);
-
 SQLRETURN  SQLRowCount(SQLHSTMT StatementHandle,
                       SQLINTEGER *RowCount);
 
-SQLRETURN  SQLScrollFetch(SQLHSTMT StatementHandle,
-                         SQLINTEGER FetchOrientation,
-                         SQLINTEGER FetchOffset);
-
 SQLRETURN  SQLSetConnectAttr(SQLHDBC ConnectionHandle,
                             SQLINTEGER AttributeCursorName,
                             SQLPOINTER Value,
@@ -533,3 +704,16 @@ SQLRETURN  SQLSetStmtAttr(SQLHSTMT StatementHandle,
                          SQLINTEGER Attribute,
                          SQLPOINTER Value,
                          SQLINTEGER StringLength);
+
+/* These are in SQL3 from August 1994
+ * but not in Date and Darwen, 1997
+ * - Thomas Lockhart 1999-06-17
+
+SQLRETURN  SQLLanguages(SQLHSTMT StatementHandle);
+
+SQLRETURN  SQLReleaseEnv(SQLHENV EnvironmentHandle);
+
+SQLRETURN  SQLScrollFetch(SQLHSTMT StatementHandle,
+                         SQLINTEGER FetchOrientation,
+                         SQLINTEGER FetchOffset);
+*/