Changeset: 63b72f1ad90d for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=63b72f1ad90d
Modified Files:
        clients/odbc/driver/SQLGetTypeInfo.c
Branch: Feb2013
Log Message:

Properly order the types in SQLGetTypeInfo.


diffs (234 lines):

diff --git a/clients/odbc/driver/SQLGetTypeInfo.c 
b/clients/odbc/driver/SQLGetTypeInfo.c
--- a/clients/odbc/driver/SQLGetTypeInfo.c
+++ b/clients/odbc/driver/SQLGetTypeInfo.c
@@ -134,7 +134,98 @@ static struct types {
        const int interval_precision;
        const char **tuple;
 } types[] = {
-       /* this table is sorted on the value of data_type */
+       /* this table is sorted on the value of data_type and then on
+        * how "close" the type maps to the corresponding ODBC SQL
+        * type (i.e. in the order SQLGetTypeInfo wants it) */
+       /* SQL_GUID */
+       {
+               "character large object", /* type_name */
+               SQL_WLONGVARCHAR,      /* data_type */
+               1000000,               /* column_size */
+               "'",                   /* literal_prefix */
+               "'",                   /* literal_suffix */
+               NULL,                  /* create_params */
+               SQL_NULLABLE,          /* nullable */
+               SQL_TRUE,              /* case_sensitive */
+               SQL_SEARCHABLE,        /* searchable */
+               -1,                    /* unsigned_attribute */
+               SQL_FALSE,             /* fixed_prec_scale */
+               SQL_FALSE,             /* auto_unique_value */
+               NULL,                  /* local_type_name */
+               -1,                    /* minimum_scale */
+               -1,                    /* maximum_scale */
+               SQL_WLONGVARCHAR,      /* sql_data_type */
+               -1,                    /* sql_datetime_sub */
+               -1,                    /* num_prec_radix */
+               -1,                    /* interval_precision */
+               NULL                   /* tuple */
+       },
+       {
+               "varchar",             /* type_name */
+               SQL_WVARCHAR,          /* data_type */
+               1000000,               /* column_size */
+               "'",                   /* literal_prefix */
+               "'",                   /* literal_suffix */
+               "length",              /* create_params */
+               SQL_NULLABLE,          /* nullable */
+               SQL_TRUE,              /* case_sensitive */
+               SQL_SEARCHABLE,        /* searchable */
+               -1,                    /* unsigned_attribute */
+               SQL_FALSE,             /* fixed_prec_scale */
+               -1,                    /* auto_unique_value */
+               NULL,                  /* local_type_name */
+               -1,                    /* minimum_scale */
+               -1,                    /* maximum_scale */
+               SQL_WVARCHAR,          /* sql_data_type */
+               -1,                    /* sql_datetime_sub */
+               -1,                    /* num_prec_radix */
+               -1,                    /* interval_precision */
+               NULL                   /* tuple */
+       },
+       {
+               "character",           /* type_name */
+               SQL_WCHAR,             /* data_type */
+               1000000,               /* column_size */
+               "'",                   /* literal_prefix */
+               "'",                   /* literal_suffix */
+               "length",              /* create_params */
+               SQL_NULLABLE,          /* nullable */
+               SQL_TRUE,              /* case_sensitive */
+               SQL_SEARCHABLE,        /* searchable */
+               -1,                    /* unsigned_attribute */
+               SQL_FALSE,             /* fixed_prec_scale */
+               SQL_FALSE,             /* auto_unique_value */
+               NULL,                  /* local_type_name */
+               -1,                    /* minimum_scale */
+               -1,                    /* maximum_scale */
+               SQL_WCHAR,             /* sql_data_type */
+               -1,                    /* sql_datetime_sub */
+               -1,                    /* num_prec_radix */
+               -1,                    /* interval_precision */
+               NULL                   /* tuple */
+       },
+       {
+               "char",                /* type_name */
+               SQL_WCHAR,             /* data_type */
+               1000000,               /* column_size */
+               "'",                   /* literal_prefix */
+               "'",                   /* literal_suffix */
+               "length",              /* create_params */
+               SQL_NULLABLE,          /* nullable */
+               SQL_TRUE,              /* case_sensitive */
+               SQL_SEARCHABLE,        /* searchable */
+               -1,                    /* unsigned_attribute */
+               SQL_FALSE,             /* fixed_prec_scale */
+               SQL_FALSE,             /* auto_unique_value */
+               NULL,                  /* local_type_name */
+               -1,                    /* minimum_scale */
+               -1,                    /* maximum_scale */
+               SQL_WCHAR,             /* sql_data_type */
+               -1,                    /* sql_datetime_sub */
+               -1,                    /* num_prec_radix */
+               -1,                    /* interval_precision */
+               NULL                   /* tuple */
+       },
        {
                "boolean",             /* type_name */
                SQL_BIT,               /* data_type */
@@ -245,73 +336,7 @@ static struct types {
                -1,                    /* interval_precision */
                NULL                   /* tuple */
        },
-       /* binary */
-       {
-               "character large object", /* type_name */
-               SQL_WLONGVARCHAR,      /* data_type */
-               1000000,               /* column_size */
-               "'",                   /* literal_prefix */
-               "'",                   /* literal_suffix */
-               NULL,                  /* create_params */
-               SQL_NULLABLE,          /* nullable */
-               SQL_TRUE,              /* case_sensitive */
-               SQL_SEARCHABLE,        /* searchable */
-               -1,                    /* unsigned_attribute */
-               SQL_FALSE,             /* fixed_prec_scale */
-               SQL_FALSE,             /* auto_unique_value */
-               NULL,                  /* local_type_name */
-               -1,                    /* minimum_scale */
-               -1,                    /* maximum_scale */
-               SQL_WLONGVARCHAR,      /* sql_data_type */
-               -1,                    /* sql_datetime_sub */
-               -1,                    /* num_prec_radix */
-               -1,                    /* interval_precision */
-               NULL                   /* tuple */
-       },
-       {
-               "character",           /* type_name */
-               SQL_WCHAR,             /* data_type */
-               1000000,               /* column_size */
-               "'",                   /* literal_prefix */
-               "'",                   /* literal_suffix */
-               "length",              /* create_params */
-               SQL_NULLABLE,          /* nullable */
-               SQL_TRUE,              /* case_sensitive */
-               SQL_SEARCHABLE,        /* searchable */
-               -1,                    /* unsigned_attribute */
-               SQL_FALSE,             /* fixed_prec_scale */
-               SQL_FALSE,             /* auto_unique_value */
-               NULL,                  /* local_type_name */
-               -1,                    /* minimum_scale */
-               -1,                    /* maximum_scale */
-               SQL_WCHAR,             /* sql_data_type */
-               -1,                    /* sql_datetime_sub */
-               -1,                    /* num_prec_radix */
-               -1,                    /* interval_precision */
-               NULL                   /* tuple */
-       },
-       {
-               "char",                /* type_name */
-               SQL_WCHAR,             /* data_type */
-               1000000,               /* column_size */
-               "'",                   /* literal_prefix */
-               "'",                   /* literal_suffix */
-               "length",              /* create_params */
-               SQL_NULLABLE,          /* nullable */
-               SQL_TRUE,              /* case_sensitive */
-               SQL_SEARCHABLE,        /* searchable */
-               -1,                    /* unsigned_attribute */
-               SQL_FALSE,             /* fixed_prec_scale */
-               SQL_FALSE,             /* auto_unique_value */
-               NULL,                  /* local_type_name */
-               -1,                    /* minimum_scale */
-               -1,                    /* maximum_scale */
-               SQL_WCHAR,             /* sql_data_type */
-               -1,                    /* sql_datetime_sub */
-               -1,                    /* num_prec_radix */
-               -1,                    /* interval_precision */
-               NULL                   /* tuple */
-       },
+       /* SQL_BINARY */
        {
                "numeric",             /* type_name */
                SQL_NUMERIC,           /* data_type */
@@ -357,7 +382,7 @@ static struct types {
                NULL                   /* tuple */
        },
        {
-               "int",                 /* type_name */
+               "integer",             /* type_name */
                SQL_INTEGER,           /* data_type */
                9,                     /* column_size */
                NULL,                  /* literal_prefix */
@@ -379,7 +404,7 @@ static struct types {
                NULL                   /* tuple */
        },
        {
-               "integer",             /* type_name */
+               "int",                 /* type_name */
                SQL_INTEGER,           /* data_type */
                9,                     /* column_size */
                NULL,                  /* literal_prefix */
@@ -511,28 +536,6 @@ static struct types {
                NULL                   /* tuple */
        },
        {
-               "varchar",             /* type_name */
-               SQL_WVARCHAR,          /* data_type */
-               1000000,               /* column_size */
-               "'",                   /* literal_prefix */
-               "'",                   /* literal_suffix */
-               "length",              /* create_params */
-               SQL_NULLABLE,          /* nullable */
-               SQL_TRUE,              /* case_sensitive */
-               SQL_SEARCHABLE,        /* searchable */
-               -1,                    /* unsigned_attribute */
-               SQL_FALSE,             /* fixed_prec_scale */
-               -1,                    /* auto_unique_value */
-               NULL,                  /* local_type_name */
-               -1,                    /* minimum_scale */
-               -1,                    /* maximum_scale */
-               SQL_WVARCHAR,          /* sql_data_type */
-               -1,                    /* sql_datetime_sub */
-               -1,                    /* num_prec_radix */
-               -1,                    /* interval_precision */
-               NULL                   /* tuple */
-       },
-       {
                "date",                /* type_name */
                SQL_TYPE_DATE,         /* data_type */
                10,                    /* column_size */
@@ -883,7 +886,7 @@ static struct types {
                -1,                    /* num_prec_radix */
                10,                    /* interval_precision */
                NULL                   /* tuple */
-       }
+       },
 };
 
 /* find some info about a type given the concise type */
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to