package SQL::Statement::GetInfo; use strict; use warnings; use vars qw($VERSION %info); $VERSION = '1.33'; use SQL::Statement(); my @Keywords = qw( INTEGERVAL STRING REALVAL IDENT NULLVAL PARAM OPERATOR IS AND OR ERROR INSERT UPDATE SELECT DELETE DROP CREATE ALL DISTINCT WHERE ORDER ASC DESC FROM INTO BY VALUES SET NOT TABLE CHAR VARCHAR REAL INTEGER PRIMARY KEY BLOB TEXT ); sub sql_keywords { return join ',', @Keywords; } %info = ( 20 => "N" # SQL_ACCESSIBLE_PROCEDURES , 19 => "Y" # SQL_ACCESSIBLE_TABLES # 0 => undef # SQL_ACTIVE_CONNECTIONS # 116 => undef # SQL_ACTIVE_ENVIRONMENTS # 1 => undef # SQL_ACTIVE_STATEMENTS , 169 => 0x0000007F # SQL_AGGREGATE_FUNCTIONS # SQL_AF_AVG + 1 # SQL_AF_COUNT + 2 # SQL_AF_MAX + 4 # SQL_AF_MIN + 8 # SQL_AF_SUM + 10 # SQL_AF_DISTINCT + 20 # SQL_AF_ALL + 40 , 117 => 0 # SQL_ALTER_DOMAIN - , 86 => 0 # SQL_ALTER_TABLE - # 10021 => undef # SQL_ASYNC_MODE # 120 => undef # SQL_BATCH_ROW_COUNT # 121 => undef # SQL_BATCH_SUPPORT # 82 => undef # SQL_BOOKMARK_PERSISTENCE , 114 => 1 # SQL_CATALOG_LOCATION , 10003 => "N" # SQL_CATALOG_NAME , 41 => '.' # SQL_CATALOG_NAME_SEPARATOR , 42 => "" # SQL_CATALOG_TERM , 92 => 0 # SQL_CATALOG_USAGE # # 10004 => undef # SQL_COLLATING_SEQUENCE , 10004 => "ISO-8859-1" # SQL_COLLATION_SEQ , 87 => "N" # SQL_COLUMN_ALIAS , 22 => 0 # SQL_CONCAT_NULL_BEHAVIOR # # CONVERT FUNCTION NOT CURRENTLY SUPPORTED # , 53 => 0 # SQL_CONVERT_BIGINT , 54 => 0 # SQL_CONVERT_BINARY , 55 => 0 # SQL_CONVERT_BIT , 56 => 0 # SQL_CONVERT_CHAR , 57 => 0 # SQL_CONVERT_DATE , 58 => 0 # SQL_CONVERT_DECIMAL , 59 => 0 # SQL_CONVERT_DOUBLE , 60 => 0 # SQL_CONVERT_FLOAT , 48 => 0 # SQL_CONVERT_FUNCTIONS , 173 => 0 # SQL_CONVERT_GUID , 61 => 0 # SQL_CONVERT_INTEGER , 123 => 0 # SQL_CONVERT_INTERVAL_DAY_TIME , 124 => 0 # SQL_CONVERT_INTERVAL_YEAR_MONTH , 71 => 0 # SQL_CONVERT_LONGVARBINARY , 62 => 0 # SQL_CONVERT_LONGVARCHAR , 63 => 0 # SQL_CONVERT_NUMERIC , 64 => 0 # SQL_CONVERT_REAL , 65 => 0 # SQL_CONVERT_SMALLINT , 66 => 0 # SQL_CONVERT_TIME , 67 => 0 # SQL_CONVERT_TIMESTAMP , 68 => 0 # SQL_CONVERT_TINYINT , 69 => 0 # SQL_CONVERT_VARBINARY , 70 => 0 # SQL_CONVERT_VARCHAR , 122 => 0 # SQL_CONVERT_WCHAR , 125 => 0 # SQL_CONVERT_WLONGVARCHAR , 126 => 0 # SQL_CONVERT_WVARCHAR # , 74 => 2 # SQL_CORRELATION_NAME , 127 => 0 # SQL_CREATE_ASSERTION , 128 => 0 # SQL_CREATE_CHARACTER_SET , 129 => 0 # SQL_CREATE_COLLATION , 130 => 0 # SQL_CREATE_DOMAIN , 131 => 0 # SQL_CREATE_SCHEMA , 132 => 1 # SQL_CREATE_TABLE , 133 => 0 # SQL_CREATE_TRANSLATION , 134 => 0 # SQL_CREATE_VIEW # # CURSORS NOT CURRENTLY SUPPORTED # # 23 => undef, # SQL_CURSOR_COMMIT_BEHAVIOR # 24 => undef, # SQL_CURSOR_ROLLBACK_BEHAVIOR # 10001 => undef, # SQL_CURSOR_SENSITIVITY # #, 2 => \&sql_data_source_name # SQL_DATA_SOURCE_NAME , 25 => "N" # SQL_DATA_SOURCE_READ_ONLY , 119 => 0 # SQL_DATETIME_LITERALS #, 17 => \&sql_driver_name # SQL_DBMS_NAME #, 18 => \&sql_driver_ver # SQL_DBMS_VER # 18 => undef # SQL_DBMS_VERSION # 170 => undef, # SQL_DDL_INDEX # 26 => undef, # SQL_DEFAULT_TRANSACTION_ISOLATION # 26 => undef # SQL_DEFAULT_TXN_ISOLATION , 10002 => "N" # SQL_DESCRIBE_PARAMETER # 171 => undef # SQL_DM_VER # 3 => undef # SQL_DRIVER_HDBC # 135 => undef # SQL_DRIVER_HDESC # 4 => undef # SQL_DRIVER_HENV # 76 => undef # SQL_DRIVER_HLIB # 5 => undef # SQL_DRIVER_HSTMT #, 6 => \&sql_driver_name # SQL_DRIVER_NAME # 77 => undef # SQL_DRIVER_ODBC_VER #, 7 => \&sql_driver_ver # SQL_DRIVER_VER , 136 => 0 # SQL_DROP_ASSERTION , 137 => 0 # SQL_DROP_CHARACTER_SET , 138 => 0 # SQL_DROP_COLLATION , 139 => 0 # SQL_DROP_DOMAIN , 140 => 0 # SQL_DROP_SCHEMA , 141 => 1 # SQL_DROP_TABLE , 142 => 0 # SQL_DROP_TRANSLATION , 143 => 0 # SQL_DROP_VIEW # 144 => undef # SQL_DYNAMIC_CURSOR_ATTRIBUTES1 # 145 => undef # SQL_DYNAMIC_CURSOR_ATTRIBUTES2 # 27 => undef # SQL_EXPRESSIONS_IN_ORDERBY # 8 => undef # SQL_FETCH_DIRECTION , 84 => 1 # SQL_FILE_USAGE # 146 => undef # SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1 # 147 => undef # SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2 # 81 => undef # SQL_GETDATA_EXTENSIONS # 88 => undef # SQL_GROUP_BY , 28 => 4 # SQL_IDENTIFIER_CASE , 29 => q(") # SQL_IDENTIFIER_QUOTE_CHAR # 148 => undef # SQL_INDEX_KEYWORDS # 149 => undef # SQL_INFO_SCHEMA_VIEWS , 172 => 1 # SQL_INSERT_STATEMENT # 73 => undef # SQL_INTEGRITY # 150 => undef # SQL_KEYSET_CURSOR_ATTRIBUTES1 # 151 => undef # SQL_KEYSET_CURSOR_ATTRIBUTES2 , 89 => \&sql_keywords # SQL_KEYWORDS , 113 => "N" # SQL_LIKE_ESCAPE_CLAUSE # 78 => undef # SQL_LOCK_TYPES # 34 => undef # SQL_MAXIMUM_CATALOG_NAME_LENGTH # 97 => undef # SQL_MAXIMUM_COLUMNS_IN_GROUP_BY # 98 => undef # SQL_MAXIMUM_COLUMNS_IN_INDEX # 99 => undef # SQL_MAXIMUM_COLUMNS_IN_ORDER_BY # 100 => undef # SQL_MAXIMUM_COLUMNS_IN_SELECT # 101 => undef # SQL_MAXIMUM_COLUMNS_IN_TABLE # 30 => undef # SQL_MAXIMUM_COLUMN_NAME_LENGTH # 1 => undef # SQL_MAXIMUM_CONCURRENT_ACTIVITIES # 31 => undef # SQL_MAXIMUM_CURSOR_NAME_LENGTH # 0 => undef # SQL_MAXIMUM_DRIVER_CONNECTIONS # 10005 => undef # SQL_MAXIMUM_IDENTIFIER_LENGTH # 102 => undef # SQL_MAXIMUM_INDEX_SIZE # 104 => undef # SQL_MAXIMUM_ROW_SIZE # 32 => undef # SQL_MAXIMUM_SCHEMA_NAME_LENGTH # 105 => undef # SQL_MAXIMUM_STATEMENT_LENGTH # 20000 => undef # SQL_MAXIMUM_STMT_OCTETS # 20001 => undef # SQL_MAXIMUM_STMT_OCTETS_DATA # 20002 => undef # SQL_MAXIMUM_STMT_OCTETS_SCHEMA # 106 => undef # SQL_MAXIMUM_TABLES_IN_SELECT # 35 => undef # SQL_MAXIMUM_TABLE_NAME_LENGTH # 107 => undef # SQL_MAXIMUM_USER_NAME_LENGTH # 10022 => undef # SQL_MAX_ASYNC_CONCURRENT_STATEMENTS # 112 => undef # SQL_MAX_BINARY_LITERAL_LEN # 34 => undef # SQL_MAX_CATALOG_NAME_LEN # 108 => undef # SQL_MAX_CHAR_LITERAL_LEN # 97 => undef # SQL_MAX_COLUMNS_IN_GROUP_BY # 98 => undef # SQL_MAX_COLUMNS_IN_INDEX # 99 => undef # SQL_MAX_COLUMNS_IN_ORDER_BY # 100 => undef # SQL_MAX_COLUMNS_IN_SELECT # 101 => undef # SQL_MAX_COLUMNS_IN_TABLE # 30 => undef # SQL_MAX_COLUMN_NAME_LEN # 1 => undef # SQL_MAX_CONCURRENT_ACTIVITIES # 31 => undef # SQL_MAX_CURSOR_NAME_LEN # 0 => undef # SQL_MAX_DRIVER_CONNECTIONS # 10005 => undef # SQL_MAX_IDENTIFIER_LEN # 102 => undef # SQL_MAX_INDEX_SIZE # 32 => undef # SQL_MAX_OWNER_NAME_LEN # 33 => undef # SQL_MAX_PROCEDURE_NAME_LEN # 34 => undef # SQL_MAX_QUALIFIER_NAME_LEN # 104 => undef # SQL_MAX_ROW_SIZE # 103 => undef # SQL_MAX_ROW_SIZE_INCLUDES_LONG # 32 => undef # SQL_MAX_SCHEMA_NAME_LEN # 105 => undef # SQL_MAX_STATEMENT_LEN # 106 => undef # SQL_MAX_TABLES_IN_SELECT # 35 => undef # SQL_MAX_TABLE_NAME_LEN # 107 => undef # SQL_MAX_USER_NAME_LEN # 37 => undef # SQL_MULTIPLE_ACTIVE_TXN # 36 => undef # SQL_MULT_RESULT_SETS , 111 => "N" # SQL_NEED_LONG_DATA_LEN , 75 => 1 # SQL_NON_NULLABLE_COLUMNS , 85 => 1 # SQL_NULL_COLLATION , 49 => 0 # SQL_NUMERIC_FUNCTIONS # 9 => undef # SQL_ODBC_API_CONFORMANCE # 152 => undef # SQL_ODBC_INTERFACE_CONFORMANCE # 12 => undef # SQL_ODBC_SAG_CLI_CONFORMANCE # 15 => undef # SQL_ODBC_SQL_CONFORMANCE # 73 => undef # SQL_ODBC_SQL_OPT_IEF # 10 => undef # SQL_ODBC_VER , 115 => 0x00000037 # SQL_OJ_CAPABILITIES # 1 SQL_OJ_LEFT + left joins SUPPORTED # 2 SQL_OJ_RIGHT + right joins SUPPORTED # 4 SQL_OJ_FULL + full joins SUPPORTED # SQL_OJ_NESTED - nested joins not supported # 10 SQL_OJ_NOT_ORDERED + on clause col order not required # 20 SQL_OJ_INNER + inner joins SUPPORTED # SQL_OJ_ALL_COMPARISON_OPS - on clause comp op must be = , 90 => "N" # SQL_ORDER_BY_COLUMNS_IN_SELECT # 38 => undef # SQL_OUTER_JOINS # 115 => undef # SQL_OUTER_JOIN_CAPABILITIES # 39 => undef # SQL_OWNER_TERM # 91 => undef # SQL_OWNER_USAGE # 153 => undef # SQL_PARAM_ARRAY_ROW_COUNTS # 154 => undef # SQL_PARAM_ARRAY_SELECTS # 80 => undef # SQL_POSITIONED_STATEMENTS # 79 => undef # SQL_POS_OPERATIONS , 21 => "N" # SQL_PROCEDURES # 40 => undef # SQL_PROCEDURE_TERM # 114 => undef # SQL_QUALIFIER_LOCATION # 41 => undef # SQL_QUALIFIER_NAME_SEPARATOR # 42 => undef # SQL_QUALIFIER_TERM # 92 => undef # SQL_QUALIFIER_USAGE , 93 => 3 # SQL_QUOTED_IDENTIFIER_CASE , 11 => "N" # SQL_ROW_UPDATES , 39 => "schema" # SQL_SCHEMA_TERM # 91 => undef # SQL_SCHEMA_USAGE # 43 => undef # SQL_SCROLL_CONCURRENCY # 44 => undef # SQL_SCROLL_OPTIONS # 14 => undef # SQL_SEARCH_PATTERN_ESCAPE # 13 => undef # SQL_SERVER_NAME # 94 => undef # SQL_SPECIAL_CHARACTERS # 155 => undef # SQL_SQL92_DATETIME_FUNCTIONS # 156 => undef # SQL_SQL92_FOREIGN_KEY_DELETE_RULE # 157 => undef # SQL_SQL92_FOREIGN_KEY_UPDATE_RULE # 158 => undef # SQL_SQL92_GRANT # 159 => undef # SQL_SQL92_NUMERIC_VALUE_FUNCTIONS , 160 => 0x00003E06 # SQL_SQL92_PREDICATES # SQL_SP_EXISTS - - # SQL_SP_ISNOTNULL + + 2 # SQL_SP_ISNULL + + 4 # SQL_SP_MATCH_FULL - - # SQL_SP_MATCH_PARTIAL - - # SQL_SP_MATCH_UNIQUE_FULL - - # SQL_SP_MATCH_UNIQUE_PARTIAL - - # SQL_SP_OVERLAPS - - # SQL_SP_UNIQUE - - # SQL_SP_LIKE + + 200 # SQL_SP_IN - + 400 # SQL_SP_BETWEEN - + 800 # SQL_SP_COMPARISON + + 1000 # SQL_SP_QUANTIFIED_COMPARISON + + 2000 , 161 => 0x000001D8 # SQL_SQL92_RELATIONAL_JOIN_OPERATORS # SQL_SRJO_CORRESPONDING_CLAUSE - corresponding clause not supported # SQL_SRJO_CROSS_JOIN - cross join not supported # SQL_SRJO_EXCEPT_JOIN - except join not supported # 8 SQL_SRJO_FULL_OUTER_JOIN + full join SUPPORTED # 10 SQL_SRJO_INNER_JOIN + inner join SUPPORTED # SQL_SRJO_INTERSECT_JOIN - intersect join not supported # 40 SQL_SRJO_LEFT_OUTER_JOIN + left join SUPPORTED # 80 SQL_SRJO_NATURAL_JOIN + natural join SUPPORTED # 100 SQL_SRJO_RIGHT_OUTER_JOIN + right join SUPPORTED # SQL_SRJO_UNION_JOIN - union join not supported # 162 => undef # SQL_SQL92_REVOKE , 163 => 3 # SQL_SQL92_ROW_VALUE_CONSTRUCTOR # SQL_SRVC_VALUE_EXPRESSION # SQL_SRVC_NULL # SQL_SRVC_DEFAULT # SQL_SRVC_ROW_SUBQUERY , 164 => 0x000000EE # SQL_SQL92_STRING_FUNCTIONS # SQL_SSF_CONVERT - /* convert() string function not supported */ # SQL_SSF_LOWER 2 + /* lower() string function SUPPORTED */ # SQL_SSF_UPPER 4 + /* upper() string function SUPPORTED */ # SQL_SSF_SUBSTRING 8 + /* substring() string function SUPPORTED */ # SQL_SSF_TRANSLATE - /* translate() string function not supported */ # SQL_SSF_TRIM_BOTH 32 + /* trim() both string function SUPPORTED */ # SQL_SSF_TRIM_LEADING 64 + /* trim() leading string function SUPPORTED */ # SQL_SSF_TRIM_TRAILING128+ /* trim() trailing string function SUPPORTED */ # 165 => undef # SQL_SQL92_VALUE_EXPRESSIONS # 118 => undef # SQL_SQL_CONFORMANCE # 166 => undef # SQL_STANDARD_CLI_CONFORMANCE # 167 => undef # SQL_STATIC_CURSOR_ATTRIBUTES1 # 168 => undef # SQL_STATIC_CURSOR_ATTRIBUTES2 # 83 => undef # SQL_STATIC_SENSITIVITY , 50 => 0x00001C49 # SQL_STRING_FUNCTIONS # SQL_FN_STR_CONCAT => 0x00000001 + # SQL_FN_STR_INSERT => 0x00000002 # SQL_FN_STR_LEFT => 0x00000004 # SQL_FN_STR_LTRIM => 0x00000008 + # SQL_FN_STR_LENGTH => 0x00000010 # SQL_FN_STR_LOCATE => 0x00000020 # SQL_FN_STR_LCASE => 0x00000040 + # SQL_FN_STR_REPEAT => 0x00000080 # SQL_FN_STR_REPLACE => 0x00000100 # SQL_FN_STR_RIGHT => 0x00000200 # SQL_FN_STR_RTRIM => 0x00000400 + # SQL_FN_STR_SUBSTRING => 0x00000800 + # SQL_FN_STR_UCASE => 0x00001000 + # SQL_FN_STR_ASCII => 0x00002000 # SQL_FN_STR_CHAR => 0x00004000 # SQL_FN_STR_DIFFERENCE => 0x00008000 # SQL_FN_STR_LOCATE_2 => 0x00010000 # SQL_FN_STR_SOUNDEX => 0x00020000 # SQL_FN_STR_SPACE => 0x00040000 # SQL_FN_STR_BIT_LENGTH => 0x00080000 # SQL_FN_STR_CHAR_LENGTH => 0x00100000 # SQL_FN_STR_CHARACTER_LENGTH => 0x00200000 # SQL_FN_STR_OCTET_LENGTH => 0x00400000 # SQL_FN_STR_POSITION => 0x00800000 # 95 => undef # SQL_SUBQUERIES # 51 => undef # SQL_SYSTEM_FUNCTIONS , 45 => "table" # SQL_TABLE_TERM # 109 => undef # SQL_TIMEDATE_ADD_INTERVALS # 110 => undef # SQL_TIMEDATE_DIFF_INTERVALS # 52 => undef # SQL_TIMEDATE_FUNCTIONS # 46 => undef # SQL_TRANSACTION_CAPABLE # 72 => undef # SQL_TRANSACTION_ISOLATION_OPTION # 46 => undef # SQL_TXN_CAPABLE # 72 => undef # SQL_TXN_ISOLATION_OPTION # 96 => undef # SQL_UNION # 96 => undef # SQL_UNION_STATEMENT #, 47 => \&sql_user_name # SQL_USER_NAME # 10000 => undef # SQL_XOPEN_CLI_YEAR ); 1; __END__ NO LONGER NEEDED sub sql_driver_name { shift->{"Driver"}->{"Name"}; } sub sql_driver_ver { my $dbh = shift; my $ver = shift; my $drv = 'DBD::'.$dbh->{"Driver"}->{"Name"}; # $ver = "$drv"."::VERSION"; # $ver = ${$ver}; my $fmt = '%02d.%02d.%1d%1d%1d%1d'; # ODBC version string: ##.##.##### $ver = sprintf $fmt, split (/\./, $ver); return $ver . '; ss-'. $SQL::Statement::VERSION; } sub sql_data_source_name { my $dbh = shift; return 'dbi:'.$dbh->{"Driver"}->{"Name"}.':'.$dbh->{"Name"}; } sub sql_user_name { my $dbh = shift; return $dbh->{"CURRENT_USER"}; } =pod =head1 NAME SQL::Statement::GetInfo =head1 SYNOPSIS # see L =head1 DESCRIPTION This package contains support for C<$dbh->get_info()>. =head1 INHERITANCE SQL::Statement::GetInfo =begin undocumented =head1 METHODS =head2 sql_keywords Returns the list of keywords =end undocumented =cut