Mercurial > hg > monetdb-perl
comparison DBD/monetdb/GetInfo.pm @ 0:cedccb7e0143
Copy of clients/perl directory without Tests from MonetDB changeset 4d2d4532228a.
author | Sjoerd Mullender <sjoerd@acm.org> |
---|---|
date | Mon, 19 Sep 2016 15:15:52 +0200 (2016-09-19) |
parents | |
children | a0ec9e080a5b |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:cedccb7e0143 |
---|---|
1 # This Source Code Form is subject to the terms of the Mozilla Public | |
2 # License, v. 2.0. If a copy of the MPL was not distributed with this | |
3 # file, You can obtain one at http://mozilla.org/MPL/2.0/. | |
4 # | |
5 # Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. | |
6 | |
7 package DBD::monetdb::GetInfo; | |
8 | |
9 use strict; | |
10 use DBD::monetdb(); | |
11 | |
12 my $sql_driver = 'monetdb'; | |
13 my $sql_ver_fmt = '%02d.%02d.%04d'; # ODBC version string: ##.##.##### | |
14 my $sql_driver_ver = sprintf $sql_ver_fmt, split(/\./, $DBD::monetdb::VERSION), 0; | |
15 | |
16 my @Keywords = qw( | |
17 BOOLEAN | |
18 COLUMNS | |
19 FLOOR | |
20 IMPORT | |
21 REAL | |
22 ); | |
23 | |
24 sub sql_keywords { | |
25 return join ',', @Keywords; | |
26 } | |
27 | |
28 sub sql_dbms_version { | |
29 my $dbh = shift; | |
30 return sprintf $sql_ver_fmt, 4, 6, 2; # TODO: mapi_... | |
31 } | |
32 | |
33 sub sql_data_source_name { | |
34 my $dbh = shift; | |
35 return "dbi:$sql_driver:" . $dbh->{Name}; | |
36 } | |
37 | |
38 sub sql_user_name { | |
39 my $dbh = shift; | |
40 return $dbh->{Username}; | |
41 } | |
42 | |
43 my %info = ( | |
44 20 => 'Y', # SQL_ACCESSIBLE_PROCEDURES | |
45 19 => 'N', # SQL_ACCESSIBLE_TABLES | |
46 0 => 0, # SQL_ACTIVE_CONNECTIONS | |
47 116 => 0, # SQL_ACTIVE_ENVIRONMENTS | |
48 1 => 0, # SQL_ACTIVE_STATEMENTS | |
49 169 => 127, # SQL_AGGREGATE_FUNCTIONS | |
50 117 => 0, # SQL_ALTER_DOMAIN | |
51 86 => 55656, # SQL_ALTER_TABLE | |
52 10021 => 0, # SQL_ASYNC_MODE | |
53 120 => 2, # SQL_BATCH_ROW_COUNT | |
54 121 => 3, # SQL_BATCH_SUPPORT | |
55 82 => 0, # SQL_BOOKMARK_PERSISTENCE | |
56 114 => 0, # SQL_CATALOG_LOCATION | |
57 10003 => 'N', # SQL_CATALOG_NAME | |
58 41 => '', # SQL_CATALOG_NAME_SEPARATOR | |
59 42 => '', # SQL_CATALOG_TERM | |
60 92 => 0, # SQL_CATALOG_USAGE | |
61 10004 => 'UTF-8', # SQL_COLLATING_SEQUENCE | |
62 10004 => 'UTF-8', # SQL_COLLATION_SEQ | |
63 87 => 'Y', # SQL_COLUMN_ALIAS | |
64 22 => 0, # SQL_CONCAT_NULL_BEHAVIOR | |
65 53 => 2097151, # SQL_CONVERT_BIGINT | |
66 54 => 2097151, # SQL_CONVERT_BINARY | |
67 55 => 2097151, # SQL_CONVERT_BIT | |
68 56 => 2097151, # SQL_CONVERT_CHAR | |
69 57 => 2097151, # SQL_CONVERT_DATE | |
70 58 => 2097151, # SQL_CONVERT_DECIMAL | |
71 59 => 2097151, # SQL_CONVERT_DOUBLE | |
72 60 => 2097151, # SQL_CONVERT_FLOAT | |
73 48 => 3, # SQL_CONVERT_FUNCTIONS | |
74 # 173 => undef, # SQL_CONVERT_GUID | |
75 61 => 2097151, # SQL_CONVERT_INTEGER | |
76 123 => 2097151, # SQL_CONVERT_INTERVAL_DAY_TIME | |
77 124 => 2097151, # SQL_CONVERT_INTERVAL_YEAR_MONTH | |
78 71 => 2097151, # SQL_CONVERT_LONGVARBINARY | |
79 62 => 2097151, # SQL_CONVERT_LONGVARCHAR | |
80 63 => 2097151, # SQL_CONVERT_NUMERIC | |
81 64 => 2097151, # SQL_CONVERT_REAL | |
82 65 => 2097151, # SQL_CONVERT_SMALLINT | |
83 66 => 2097151, # SQL_CONVERT_TIME | |
84 67 => 2097151, # SQL_CONVERT_TIMESTAMP | |
85 68 => 2097151, # SQL_CONVERT_TINYINT | |
86 69 => 2097151, # SQL_CONVERT_VARBINARY | |
87 70 => 2097151, # SQL_CONVERT_VARCHAR | |
88 # 122 => undef, # SQL_CONVERT_WCHAR | |
89 # 125 => undef, # SQL_CONVERT_WLONGVARCHAR | |
90 # 126 => undef, # SQL_CONVERT_WVARCHAR | |
91 74 => 2, # SQL_CORRELATION_NAME | |
92 127 => 0, # SQL_CREATE_ASSERTION | |
93 128 => 0, # SQL_CREATE_CHARACTER_SET | |
94 129 => 0, # SQL_CREATE_COLLATION | |
95 130 => 0, # SQL_CREATE_DOMAIN | |
96 131 => 3, # SQL_CREATE_SCHEMA | |
97 132 => 13851, # SQL_CREATE_TABLE | |
98 133 => 0, # SQL_CREATE_TRANSLATION | |
99 134 => 3, # SQL_CREATE_VIEW | |
100 23 => 0, # SQL_CURSOR_COMMIT_BEHAVIOR | |
101 24 => 0, # SQL_CURSOR_ROLLBACK_BEHAVIOR | |
102 10001 => 1, # SQL_CURSOR_SENSITIVITY | |
103 2 => \&sql_data_source_name, # SQL_DATA_SOURCE_NAME | |
104 25 => 'N', # SQL_DATA_SOURCE_READ_ONLY | |
105 119 => 0, # SQL_DATETIME_LITERALS | |
106 17 => 'MonetDB', # SQL_DBMS_NAME | |
107 18 => \&sql_dbms_version, # SQL_DBMS_VERSION | |
108 170 => 0, # SQL_DDL_INDEX | |
109 26 => 2, # SQL_DEFAULT_TRANSACTION_ISOLATION | |
110 26 => 2, # SQL_DEFAULT_TXN_ISOLATION | |
111 10002 => 'N', # SQL_DESCRIBE_PARAMETER | |
112 #- 171 => '03.52.6019.0000', # SQL_DM_VER | |
113 #- 3 => 28510912, # SQL_DRIVER_HDBC | |
114 # 135 => undef, # SQL_DRIVER_HDESC | |
115 #- 4 => 28510880, # SQL_DRIVER_HENV | |
116 # 76 => undef, # SQL_DRIVER_HLIB | |
117 # 5 => undef, # SQL_DRIVER_HSTMT | |
118 6 => $INC{'DBD/monetdb.pm'}, # SQL_DRIVER_NAME | |
119 #- 77 => '03.52', # SQL_DRIVER_ODBC_VER | |
120 7 => $sql_driver_ver, # SQL_DRIVER_VER | |
121 136 => 0, # SQL_DROP_ASSERTION | |
122 137 => 0, # SQL_DROP_CHARACTER_SET | |
123 138 => 0, # SQL_DROP_COLLATION | |
124 139 => 0, # SQL_DROP_DOMAIN | |
125 140 => 0, # SQL_DROP_SCHEMA | |
126 141 => 0, # SQL_DROP_TABLE | |
127 142 => 0, # SQL_DROP_TRANSLATION | |
128 143 => 0, # SQL_DROP_VIEW | |
129 144 => 0, # SQL_DYNAMIC_CURSOR_ATTRIBUTES1 | |
130 145 => 0, # SQL_DYNAMIC_CURSOR_ATTRIBUTES2 | |
131 27 => 'Y', # SQL_EXPRESSIONS_IN_ORDERBY | |
132 8 => 1, # SQL_FETCH_DIRECTION | |
133 84 => 0, # SQL_FILE_USAGE | |
134 146 => 0, # SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1 | |
135 147 => 0, # SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2 | |
136 81 => 15, # SQL_GETDATA_EXTENSIONS | |
137 88 => 3, # SQL_GROUP_BY | |
138 28 => 2, # SQL_IDENTIFIER_CASE | |
139 29 => '"', # SQL_IDENTIFIER_QUOTE_CHAR | |
140 # 148 => undef, # SQL_INDEX_KEYWORDS | |
141 149 => 0, # SQL_INFO_SCHEMA_VIEWS | |
142 172 => 0, # SQL_INSERT_STATEMENT | |
143 73 => 'N', # SQL_INTEGRITY | |
144 150 => 0, # SQL_KEYSET_CURSOR_ATTRIBUTES1 | |
145 151 => 0, # SQL_KEYSET_CURSOR_ATTRIBUTES2 | |
146 89 => \&sql_keywords, # SQL_KEYWORDS | |
147 113 => 'Y', # SQL_LIKE_ESCAPE_CLAUSE | |
148 78 => 0, # SQL_LOCK_TYPES | |
149 34 => 255, # SQL_MAXIMUM_CATALOG_NAME_LENGTH | |
150 97 => 0, # SQL_MAXIMUM_COLUMNS_IN_GROUP_BY | |
151 98 => 0, # SQL_MAXIMUM_COLUMNS_IN_INDEX | |
152 99 => 0, # SQL_MAXIMUM_COLUMNS_IN_ORDER_BY | |
153 100 => 0, # SQL_MAXIMUM_COLUMNS_IN_SELECT | |
154 101 => 0, # SQL_MAXIMUM_COLUMNS_IN_TABLE | |
155 30 => 255, # SQL_MAXIMUM_COLUMN_NAME_LENGTH | |
156 1 => 0, # SQL_MAXIMUM_CONCURRENT_ACTIVITIES | |
157 31 => 0, # SQL_MAXIMUM_CURSOR_NAME_LENGTH | |
158 0 => 0, # SQL_MAXIMUM_DRIVER_CONNECTIONS | |
159 10005 => 0, # SQL_MAXIMUM_IDENTIFIER_LENGTH | |
160 102 => 0, # SQL_MAXIMUM_INDEX_SIZE | |
161 104 => 0, # SQL_MAXIMUM_ROW_SIZE | |
162 32 => 255, # SQL_MAXIMUM_SCHEMA_NAME_LENGTH | |
163 105 => 0, # SQL_MAXIMUM_STATEMENT_LENGTH | |
164 # 20000 => undef, # SQL_MAXIMUM_STMT_OCTETS | |
165 # 20001 => undef, # SQL_MAXIMUM_STMT_OCTETS_DATA | |
166 # 20002 => undef, # SQL_MAXIMUM_STMT_OCTETS_SCHEMA | |
167 106 => 0, # SQL_MAXIMUM_TABLES_IN_SELECT | |
168 35 => 255, # SQL_MAXIMUM_TABLE_NAME_LENGTH | |
169 107 => 0, # SQL_MAXIMUM_USER_NAME_LENGTH | |
170 10022 => 0, # SQL_MAX_ASYNC_CONCURRENT_STATEMENTS | |
171 112 => 0, # SQL_MAX_BINARY_LITERAL_LEN | |
172 34 => 255, # SQL_MAX_CATALOG_NAME_LEN | |
173 108 => 1048576, # SQL_MAX_CHAR_LITERAL_LEN | |
174 97 => 0, # SQL_MAX_COLUMNS_IN_GROUP_BY | |
175 98 => 0, # SQL_MAX_COLUMNS_IN_INDEX | |
176 99 => 0, # SQL_MAX_COLUMNS_IN_ORDER_BY | |
177 100 => 0, # SQL_MAX_COLUMNS_IN_SELECT | |
178 101 => 0, # SQL_MAX_COLUMNS_IN_TABLE | |
179 30 => 255, # SQL_MAX_COLUMN_NAME_LEN | |
180 1 => 0, # SQL_MAX_CONCURRENT_ACTIVITIES | |
181 31 => 0, # SQL_MAX_CURSOR_NAME_LEN | |
182 0 => 0, # SQL_MAX_DRIVER_CONNECTIONS | |
183 10005 => 0, # SQL_MAX_IDENTIFIER_LEN | |
184 102 => 0, # SQL_MAX_INDEX_SIZE | |
185 32 => 255, # SQL_MAX_OWNER_NAME_LEN | |
186 33 => 0, # SQL_MAX_PROCEDURE_NAME_LEN | |
187 34 => 255, # SQL_MAX_QUALIFIER_NAME_LEN | |
188 104 => 0, # SQL_MAX_ROW_SIZE | |
189 103 => 'N', # SQL_MAX_ROW_SIZE_INCLUDES_LONG | |
190 32 => 255, # SQL_MAX_SCHEMA_NAME_LEN | |
191 105 => 0, # SQL_MAX_STATEMENT_LEN | |
192 106 => 0, # SQL_MAX_TABLES_IN_SELECT | |
193 35 => 255, # SQL_MAX_TABLE_NAME_LEN | |
194 107 => 0, # SQL_MAX_USER_NAME_LEN | |
195 37 => 'Y', # SQL_MULTIPLE_ACTIVE_TXN | |
196 36 => 'N', # SQL_MULT_RESULT_SETS | |
197 111 => 'Y', # SQL_NEED_LONG_DATA_LEN | |
198 75 => 1, # SQL_NON_NULLABLE_COLUMNS | |
199 85 => 1, # SQL_NULL_COLLATION | |
200 49 => 16777215, # SQL_NUMERIC_FUNCTIONS | |
201 9 => 1, # SQL_ODBC_API_CONFORMANCE | |
202 152 => 1, # SQL_ODBC_INTERFACE_CONFORMANCE | |
203 12 => 1, # SQL_ODBC_SAG_CLI_CONFORMANCE | |
204 15 => 1, # SQL_ODBC_SQL_CONFORMANCE | |
205 73 => 'N', # SQL_ODBC_SQL_OPT_IEF | |
206 #- 10 => '03.52.0000', # SQL_ODBC_VER | |
207 115 => 0, # SQL_OJ_CAPABILITIES | |
208 90 => 'N', # SQL_ORDER_BY_COLUMNS_IN_SELECT | |
209 38 => 'Y', # SQL_OUTER_JOINS | |
210 115 => 0, # SQL_OUTER_JOIN_CAPABILITIES | |
211 39 => '', # SQL_OWNER_TERM | |
212 91 => 0, # SQL_OWNER_USAGE | |
213 153 => 0, # SQL_PARAM_ARRAY_ROW_COUNTS | |
214 154 => 0, # SQL_PARAM_ARRAY_SELECTS | |
215 80 => 4, # SQL_POSITIONED_STATEMENTS | |
216 79 => 0, # SQL_POS_OPERATIONS | |
217 21 => 'N', # SQL_PROCEDURES | |
218 40 => '', # SQL_PROCEDURE_TERM | |
219 114 => 0, # SQL_QUALIFIER_LOCATION | |
220 41 => '', # SQL_QUALIFIER_NAME_SEPARATOR | |
221 42 => '', # SQL_QUALIFIER_TERM | |
222 92 => 0, # SQL_QUALIFIER_USAGE | |
223 93 => 3, # SQL_QUOTED_IDENTIFIER_CASE | |
224 11 => 'N', # SQL_ROW_UPDATES | |
225 39 => '', # SQL_SCHEMA_TERM | |
226 91 => 0, # SQL_SCHEMA_USAGE | |
227 43 => 1, # SQL_SCROLL_CONCURRENCY | |
228 44 => 16, # SQL_SCROLL_OPTIONS | |
229 14 => '', # SQL_SEARCH_PATTERN_ESCAPE | |
230 13 => 'MonetDB', # SQL_SERVER_NAME | |
231 94 => '`!#$;:\'<>', # SQL_SPECIAL_CHARACTERS | |
232 # 155 => undef, # SQL_SQL92_DATETIME_FUNCTIONS | |
233 # 156 => undef, # SQL_SQL92_FOREIGN_KEY_DELETE_RULE | |
234 # 157 => undef, # SQL_SQL92_FOREIGN_KEY_UPDATE_RULE | |
235 # 158 => undef, # SQL_SQL92_GRANT | |
236 # 159 => undef, # SQL_SQL92_NUMERIC_VALUE_FUNCTIONS | |
237 # 160 => undef, # SQL_SQL92_PREDICATES | |
238 # 161 => undef, # SQL_SQL92_RELATIONAL_JOIN_OPERATORS | |
239 # 162 => undef, # SQL_SQL92_REVOKE | |
240 # 163 => undef, # SQL_SQL92_ROW_VALUE_CONSTRUCTOR | |
241 # 164 => undef, # SQL_SQL92_STRING_FUNCTIONS | |
242 # 165 => undef, # SQL_SQL92_VALUE_EXPRESSIONS | |
243 118 => 8, # SQL_SQL_CONFORMANCE | |
244 # 166 => undef, # SQL_STANDARD_CLI_CONFORMANCE | |
245 167 => 583, # SQL_STATIC_CURSOR_ATTRIBUTES1 | |
246 168 => 4096, # SQL_STATIC_CURSOR_ATTRIBUTES2 | |
247 83 => 0, # SQL_STATIC_SENSITIVITY | |
248 50 => 458751, # SQL_STRING_FUNCTIONS | |
249 95 => 23, # SQL_SUBQUERIES | |
250 51 => 7, # SQL_SYSTEM_FUNCTIONS | |
251 45 => '', # SQL_TABLE_TERM | |
252 109 => 0, # SQL_TIMEDATE_ADD_INTERVALS | |
253 110 => 0, # SQL_TIMEDATE_DIFF_INTERVALS | |
254 52 => 131071, # SQL_TIMEDATE_FUNCTIONS | |
255 46 => 2, # SQL_TRANSACTION_CAPABLE | |
256 72 => 4, # SQL_TRANSACTION_ISOLATION_OPTION | |
257 46 => 2, # SQL_TXN_CAPABLE | |
258 72 => 4, # SQL_TXN_ISOLATION_OPTION | |
259 96 => 1, # SQL_UNION | |
260 96 => 1, # SQL_UNION_STATEMENT | |
261 47 => \&sql_user_name, # SQL_USER_NAME | |
262 10000 => '', # SQL_XOPEN_CLI_YEAR | |
263 ); | |
264 | |
265 sub get_info { | |
266 my ($dbh, $info_type) = @_; | |
267 my $value = $info{int($info_type)}; | |
268 $value = $value->($dbh) if ref $value eq 'CODE'; | |
269 return $value; | |
270 } | |
271 | |
272 1; |