PageRenderTime 16ms CodeModel.GetById 2ms app.highlight 10ms RepoModel.GetById 1ms app.codeStats 0ms

/phpmyadmin/libraries/data_mysql.inc.php

https://bitbucket.org/adarshj/convenient_website
PHP | 286 lines | 253 code | 21 blank | 12 comment | 7 complexity | 05d9f31ba03c21d6685b449266aef704 MD5 | raw file
  1<?php
  2/**
  3 * Column types and functions supported by MySQL
  4 *
  5 * @package PhpMyAdmin
  6 */
  7
  8// VARCHAR, TINYINT, TEXT and DATE are listed first, based on estimated popularity
  9$cfg['ColumnTypes'] = !empty($cfg['ColumnTypes']) ? $cfg['ColumnTypes'] : array(
 10    // most used
 11    'INT',
 12    'VARCHAR',
 13    'TEXT',
 14    'DATE',
 15
 16    // numeric
 17    'NUMERIC' => array(
 18        'TINYINT',
 19        'SMALLINT',
 20        'MEDIUMINT',
 21        'INT',
 22        'BIGINT',
 23        '-',
 24        'DECIMAL',
 25        'FLOAT',
 26        'DOUBLE',
 27        'REAL',
 28        '-',
 29        'BIT',
 30        'BOOLEAN',
 31        'SERIAL',
 32    ),
 33
 34
 35    // Date/Time
 36    'DATE and TIME' => array(
 37        'DATE',
 38        'DATETIME',
 39        'TIMESTAMP',
 40        'TIME',
 41        'YEAR',
 42    ),
 43
 44    // Text
 45    'STRING' => array(
 46        'CHAR',
 47        'VARCHAR',
 48        '-',
 49        'TINYTEXT',
 50        'TEXT',
 51        'MEDIUMTEXT',
 52        'LONGTEXT',
 53        '-',
 54        'BINARY',
 55        'VARBINARY',
 56        '-',
 57        'TINYBLOB',
 58        'MEDIUMBLOB',
 59        'BLOB',
 60        'LONGBLOB',
 61        '-',
 62        'ENUM',
 63        'SET',
 64    ),
 65
 66    'SPATIAL' => array(
 67        'GEOMETRY',
 68        'POINT',
 69        'LINESTRING',
 70        'POLYGON',
 71        'MULTIPOINT',
 72        'MULTILINESTRING',
 73        'MULTIPOLYGON',
 74        'GEOMETRYCOLLECTION',
 75    ),
 76);
 77
 78$cfg['AttributeTypes'] = !empty($cfg['AttributeTypes']) ? $cfg['AttributeTypes'] : array(
 79   '',
 80   'BINARY',
 81   'UNSIGNED',
 82   'UNSIGNED ZEROFILL',
 83   'on update CURRENT_TIMESTAMP',
 84);
 85
 86if ($cfg['ShowFunctionFields']) {
 87    $cfg['RestrictColumnTypes'] = !empty($cfg['RestrictColumnTypes']) ? $cfg['RestrictColumnTypes'] : array(
 88        'TINYINT'   => 'FUNC_NUMBER',
 89        'SMALLINT'  => 'FUNC_NUMBER',
 90        'MEDIUMINT' => 'FUNC_NUMBER',
 91        'INT'       => 'FUNC_NUMBER',
 92        'BIGINT'    => 'FUNC_NUMBER',
 93        'DECIMAL'   => 'FUNC_NUMBER',
 94        'FLOAT'     => 'FUNC_NUMBER',
 95        'DOUBLE'    => 'FUNC_NUMBER',
 96        'REAL'      => 'FUNC_NUMBER',
 97        'BIT'       => 'FUNC_NUMBER',
 98        'BOOLEAN'   => 'FUNC_NUMBER',
 99        'SERIAL'    => 'FUNC_NUMBER',
100
101        'DATE'      => 'FUNC_DATE',
102        'DATETIME'  => 'FUNC_DATE',
103        'TIMESTAMP' => 'FUNC_DATE',
104        'TIME'      => 'FUNC_DATE',
105        'YEAR'      => 'FUNC_DATE',
106
107        'CHAR'       => 'FUNC_CHAR',
108        'VARCHAR'    => 'FUNC_CHAR',
109        'TINYTEXT'   => 'FUNC_CHAR',
110        'TEXT'       => 'FUNC_CHAR',
111        'MEDIUMTEXT' => 'FUNC_CHAR',
112        'LONGTEXT'   => 'FUNC_CHAR',
113        'BINARY'     => 'FUNC_CHAR',
114        'VARBINARY'  => 'FUNC_CHAR',
115        'TINYBLOB'   => 'FUNC_CHAR',
116        'MEDIUMBLOB' => 'FUNC_CHAR',
117        'BLOB'       => 'FUNC_CHAR',
118        'LONGBLOB'   => 'FUNC_CHAR',
119        'ENUM'       => '',
120        'SET'        => '',
121
122        'GEOMETRY'           => 'FUNC_SPATIAL',
123        'POINT'              => 'FUNC_SPATIAL',
124        'LINESTRING'         => 'FUNC_SPATIAL',
125        'POLYGON'            => 'FUNC_SPATIAL',
126        'MULTIPOINT'         => 'FUNC_SPATIAL',
127        'MULTILINESTRING'    => 'FUNC_SPATIAL',
128        'MULTIPOLYGON'       => 'FUNC_SPATIAL',
129        'GEOMETRYCOLLECTION' => 'FUNC_SPATIAL',
130
131    );
132
133    $restrict_functions = array(
134        'FUNC_CHAR' => array(
135            'BIN',
136            'CHAR',
137            'CURRENT_USER',
138            'COMPRESS',
139            'DATABASE',
140            'DAYNAME',
141            'DES_DECRYPT',
142            'DES_ENCRYPT',
143            'ENCRYPT',
144            'HEX',
145            'INET_NTOA',
146            'LOAD_FILE',
147            'LOWER',
148            'LTRIM',
149            'MD5',
150            'MONTHNAME',
151            'OLD_PASSWORD',
152            'PASSWORD',
153            'QUOTE',
154            'REVERSE',
155            'RTRIM',
156            'SHA1',
157            'SOUNDEX',
158            'SPACE',
159            'TRIM',
160            'UNCOMPRESS',
161            'UNHEX',
162            'UPPER',
163            'USER',
164            'UUID',
165            'VERSION',
166        ),
167
168        'FUNC_DATE' => array(
169            'CURRENT_DATE',
170            'CURRENT_TIME',
171            'DATE',
172            'FROM_DAYS',
173            'FROM_UNIXTIME',
174            'LAST_DAY',
175            'NOW',
176            'SEC_TO_TIME',
177            'SYSDATE',
178            'TIME',
179            'TIMESTAMP',
180            'UTC_DATE',
181            'UTC_TIME',
182            'UTC_TIMESTAMP',
183            'YEAR',
184        ),
185
186        'FUNC_NUMBER' => array(
187            'ABS',
188            'ACOS',
189            'ASCII',
190            'ASIN',
191            'ATAN',
192            'BIT_LENGTH',
193            'BIT_COUNT',
194            'CEILING',
195            'CHAR_LENGTH',
196            'CONNECTION_ID',
197            'COS',
198            'COT',
199            'CRC32',
200            'DAYOFMONTH',
201            'DAYOFWEEK',
202            'DAYOFYEAR',
203            'DEGREES',
204            'EXP',
205            'FLOOR',
206            'HOUR',
207            'INET_ATON',
208            'LENGTH',
209            'LN',
210            'LOG',
211            'LOG2',
212            'LOG10',
213            'MICROSECOND',
214            'MINUTE',
215            'MONTH',
216            'OCT',
217            'ORD',
218            'PI',
219            'QUARTER',
220            'RADIANS',
221            'RAND',
222            'ROUND',
223            'SECOND',
224            'SIGN',
225            'SIN',
226            'SQRT',
227            'TAN',
228            'TO_DAYS',
229            'TO_SECONDS',
230            'TIME_TO_SEC',
231            'UNCOMPRESSED_LENGTH',
232            'UNIX_TIMESTAMP',
233            'UUID_SHORT',
234            'WEEK',
235            'WEEKDAY',
236            'WEEKOFYEAR',
237            'YEARWEEK',
238        ),
239
240        'FUNC_SPATIAL' => array(
241            'GeomFromText',
242            'GeomFromWKB',
243
244            'GeomCollFromText',
245            'LineFromText',
246            'MLineFromText',
247            'PointFromText',
248            'MPointFromText',
249            'PolyFromText',
250            'MPolyFromText',
251
252            'GeomCollFromWKB',
253            'LineFromWKB',
254            'MLineFromWKB',
255            'PointFromWKB',
256            'MPointFromWKB',
257            'PolyFromWKB',
258            'MPolyFromWKB',
259        ),
260    );
261    // $restrict_functions holds all known functions, remove these that are unavailable on current server
262    if (PMA_MYSQL_INT_VERSION < 50500) {
263        $restrict_functions['FUNC_NUMBER'] = array_diff($restrict_functions['FUNC_NUMBER'], array('TO_SECONDS'));
264    }
265    if (PMA_MYSQL_INT_VERSION < 50120) {
266        $restrict_functions['FUNC_NUMBER'] = array_diff($restrict_functions['FUNC_NUMBER'], array('UUID_SHORT'));
267    }
268
269    if (empty($cfg['RestrictFunctions'])) {
270        $cfg['RestrictFunctions'] = $restrict_functions;
271    }
272
273    if (empty($cfg['Functions'])) {
274        // build a list of functions based on $restrict_functions
275        $cfg['Functions'] = array();
276        foreach ($restrict_functions as $cat => $functions) {
277            if ($cat != 'FUNC_SPATIAL') {
278                $cfg['Functions'] = array_merge($cfg['Functions'], $functions);
279            }
280        }
281        sort($cfg['Functions']);
282    }
283    unset($restrict_functions);
284} // end if
285
286?>