PageRenderTime 51ms CodeModel.GetById 27ms RepoModel.GetById 1ms app.codeStats 0ms

/phpMyAdmin/libraries/data_mysql.inc.php

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