Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit a445d94

Browse files
committed
Function list and column types for Drizzle
1 parent ff0081b commit a445d94

5 files changed

Lines changed: 253 additions & 5 deletions

File tree

db_routines.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,11 @@
1313
require_once './libraries/common.lib.php';
1414
require_once './libraries/db_routines.lib.php';
1515
require_once './libraries/mysql_charsets.lib.php';
16-
require_once './libraries/data_mysql.inc.php';
16+
if (PMA_DRIZZLE) {
17+
require_once './libraries/data_drizzle.inc.php';
18+
} else {
19+
require_once './libraries/data_mysql.inc.php';
20+
}
1721

1822
/**
1923
* Include JavaScript libraries

libraries/data_drizzle.inc.php

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

libraries/data_mysql.inc.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,8 +166,8 @@
166166
),
167167

168168
'FUNC_DATE' => array(
169-
'CURDATE',
170-
'CURTIME',
169+
'CURRENT_DATE',
170+
'CURRENT_TIME',
171171
'DATE',
172172
'FROM_DAYS',
173173
'FROM_UNIXTIME',

libraries/tbl_properties.inc.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,11 @@
2828
require_once './libraries/Partition.class.php';
2929

3030
// load additional configuration variables
31-
require_once './libraries/data_mysql.inc.php';
31+
if (PMA_DRIZZLE) {
32+
require_once './libraries/data_drizzle.inc.php';
33+
} else {
34+
require_once './libraries/data_mysql.inc.php';
35+
}
3236

3337
if (is_int($cfg['DefaultPropDisplay'])) {
3438
if ($num_fields <= $cfg['DefaultPropDisplay']) {

tbl_change.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,11 @@
2020
require_once './libraries/db_table_exists.lib.php';
2121

2222
// load additional configuration variables
23-
require_once './libraries/data_mysql.inc.php';
23+
if (PMA_DRIZZLE) {
24+
require_once './libraries/data_drizzle.inc.php';
25+
} else {
26+
require_once './libraries/data_mysql.inc.php';
27+
}
2428

2529
/**
2630
* Sets global variables.

0 commit comments

Comments
 (0)