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+ ?>
0 commit comments