PageRenderTime 102ms CodeModel.GetById 90ms app.highlight 8ms RepoModel.GetById 1ms app.codeStats 1ms

/phpmyadmin/libraries/data_drizzle.inc.php

https://bitbucket.org/adarshj/convenient_website
PHP | 225 lines | 191 code | 19 blank | 15 comment | 6 complexity | 29b58976d1005cbcd9ce51a7133f06fd MD5 | raw file
  1<?php
  2/**
  3 * Column types and functions supported by Drizzle
  4 *
  5 * @package PhpMyAdmin
  6 */
  7
  8$auto_column_types = empty($cfg['ColumnTypes']);
  9
 10// VARCHAR, TINYINT, TEXT and DATE are listed first, based on estimated popularity
 11$cfg['ColumnTypes'] = !empty($cfg['ColumnTypes']) ? $cfg['ColumnTypes'] : array(
 12    // most used
 13    'INTEGER',
 14    'VARCHAR',
 15    'TEXT',
 16    'DATE',
 17
 18    // numeric
 19    'NUMERIC' => array(
 20        'INTEGER',
 21        'BIGINT',
 22        '-',
 23        'DECIMAL',
 24        'DOUBLE',
 25        '-',
 26        'BOOLEAN',
 27        'SERIAL',
 28        'UUID',
 29    ),
 30
 31
 32    // Date/Time
 33    'DATE and TIME' => array(
 34        'DATE',
 35        'DATETIME',
 36        'TIMESTAMP',
 37        'TIME',
 38    ),
 39
 40    // Text
 41    'STRING' => array(
 42        'VARCHAR',
 43        'TEXT',
 44        '-',
 45        'VARBINARY',
 46        'BLOB',
 47        '-',
 48        'ENUM',
 49    ),
 50);
 51
 52if ($auto_column_types && PMA_MYSQL_INT_VERSION >= 20120130) {
 53    $cfg['ColumnTypes']['STRING'][] = '-';
 54    $cfg['ColumnTypes']['STRING'][] = 'IPV6';
 55}
 56unset($auto_column_types);
 57
 58$cfg['AttributeTypes'] = !empty($cfg['AttributeTypes']) ? $cfg['AttributeTypes'] : array(
 59   '',
 60   'on update CURRENT_TIMESTAMP',
 61);
 62
 63if ($cfg['ShowFunctionFields']) {
 64    $cfg['RestrictColumnTypes'] = !empty($cfg['RestrictColumnTypes']) ? $cfg['RestrictColumnTypes'] : array(
 65        'INTEGER'   => 'FUNC_NUMBER',
 66        'BIGINT'    => 'FUNC_NUMBER',
 67        'DECIMAL'   => 'FUNC_NUMBER',
 68        'DOUBLE'    => 'FUNC_NUMBER',
 69        'BOOLEAN'   => 'FUNC_NUMBER',
 70        'SERIAL'    => 'FUNC_NUMBER',
 71
 72        'DATE'      => 'FUNC_DATE',
 73        'DATETIME'  => 'FUNC_DATE',
 74        'TIMESTAMP' => 'FUNC_DATE',
 75        'TIME'      => 'FUNC_DATE',
 76
 77        'VARCHAR'    => 'FUNC_CHAR',
 78        'TEXT'       => 'FUNC_CHAR',
 79        'VARBINARY'  => 'FUNC_CHAR',
 80        'BLOB'       => 'FUNC_CHAR',
 81        'UUID'       => 'FUNC_UUID',
 82        'ENUM'       => '',
 83    );
 84
 85    $restrict_functions = array(
 86        'FUNC_CHAR' => array(
 87            'BIN',
 88            'CHAR',
 89            'CURRENT_USER',
 90            'COMPRESS',
 91            'DATABASE',
 92            'DAYNAME',
 93            'HEX',
 94            'LOAD_FILE',
 95            'LOWER',
 96            'LTRIM',
 97            'MD5',
 98            'MONTHNAME',
 99            'QUOTE',
100            'REVERSE',
101            'RTRIM',
102            'SCHEMA',
103            'SPACE',
104            'TRIM',
105            'UNCOMPRESS',
106            'UNHEX',
107            'UPPER',
108            'USER',
109            'UUID',
110            'VERSION',
111        ),
112
113        'FUNC_UUID' => array(
114            'UUID',
115        ),
116
117        'FUNC_DATE' => array(
118            'CURRENT_DATE',
119            'CURRENT_TIME',
120            'DATE',
121            'FROM_DAYS',
122            'FROM_UNIXTIME',
123            'LAST_DAY',
124            'NOW',
125            'SYSDATE',
126            //'TIME', // https://bugs.launchpad.net/drizzle/+bug/804571
127            'TIMESTAMP',
128            'UTC_DATE',
129            'UTC_TIME',
130            'UTC_TIMESTAMP',
131            'YEAR',
132        ),
133
134        'FUNC_NUMBER' => array(
135            'ABS',
136            'ACOS',
137            'ASCII',
138            'ASIN',
139            'ATAN',
140            'BIT_COUNT',
141            'CEILING',
142            'CHAR_LENGTH',
143            'CONNECTION_ID',
144            'COS',
145            'COT',
146            'CRC32',
147            'DAYOFMONTH',
148            'DAYOFWEEK',
149            'DAYOFYEAR',
150            'DEGREES',
151            'EXP',
152            'FLOOR',
153            'HOUR',
154            'LENGTH',
155            'LN',
156            'LOG',
157            'LOG2',
158            'LOG10',
159            'MICROSECOND',
160            'MINUTE',
161            'MONTH',
162            'OCT',
163            'ORD',
164            'PI',
165            'QUARTER',
166            'RADIANS',
167            'RAND',
168            'ROUND',
169            'SECOND',
170            'SIGN',
171            'SIN',
172            'SQRT',
173            'TAN',
174            'TO_DAYS',
175            'TIME_TO_SEC',
176            'UNCOMPRESSED_LENGTH',
177            'UNIX_TIMESTAMP',
178            //'WEEK', // same as TIME
179            'WEEKDAY',
180            'WEEKOFYEAR',
181            'YEARWEEK',
182        ),
183    );
184    $cfg_default_restrict_funcs = empty($cfg['RestrictFunctions']);
185    if ($cfg_default_restrict_funcs) {
186        $cfg['RestrictFunctions'] = $restrict_functions;
187    }
188
189    if (empty($cfg['Functions'])) {
190        // build a list of functions based on $restrict_functions
191        $cfg['Functions'] = array();
192        foreach ($restrict_functions as $cat => $functions) {
193            $cfg['Functions'] = array_merge($cfg['Functions'], $functions);
194        }
195
196        // check for some functions known to be in modules
197        $functions = array(
198            'MYSQL_PASSWORD' => 'FUNC_CHAR',
199            'ROT13' => 'FUNC_CHAR',
200        );
201        // add new functions
202        $sql = "SELECT upper(plugin_name) f
203            FROM data_dictionary.plugins
204            WHERE plugin_name IN ('" . implode("','", array_keys($functions)) . "')
205              AND plugin_type = 'Function'
206              AND is_active";
207        $drizzle_functions = PMA_DBI_fetch_result($sql, 'f', 'f');
208        $cfg['Functions'] = array_merge($cfg['Functions'], $drizzle_functions);
209        if ($cfg_default_restrict_funcs) {
210            foreach ($drizzle_functions as $function) {
211                $category = $functions[$function];
212                $cfg['RestrictFunctions'][$category][] = $function;
213            }
214            foreach ($cfg['RestrictFunctions'] as &$v) {
215                sort($v);
216            }
217            unset($v);
218        }
219
220        sort($cfg['Functions']);
221    }
222    unset($restrict_functions);
223} // end if
224
225?>