[Phpmyadmin-git] [SCM] phpMyAdmin branch, master, updated. RELEASE_3_4_3_1-6554-g66158f6
Piotr Przybylski
crackpl at users.sourceforge.net
Wed Jul 6 18:14:43 CEST 2011
The branch, master has been updated
via 66158f66c291b0ad1e627205d9381beeed061ded (commit)
via 511cf978f6a910a3d7376884d42d1c502298aeba (commit)
via 866d1da95a853cd35920253e53432c4f55ad61bf (commit)
via 87a539aea7240e7563e47927f10000368a921e90 (commit)
via c9df5b273323d9e8af0f86d7ce72e0e6d1728b0d (commit)
from 9e34ccf57cfc97c3cac6d7f9ceecd6e1cc89e10d (commit)
- Log -----------------------------------------------------------------
commit 66158f66c291b0ad1e627205d9381beeed061ded
Author: Piotr Przybylski <piotrprz at gmail.com>
Date: Wed Jul 6 17:46:18 2011 +0200
Move DefaultFunctions back to config.default.php
commit 511cf978f6a910a3d7376884d42d1c502298aeba
Author: Piotr Przybylski <piotrprz at gmail.com>
Date: Wed Jul 6 17:35:22 2011 +0200
Infer $cfg['Functions'] from $cfg['RestrictFunctions']
commit 866d1da95a853cd35920253e53432c4f55ad61bf
Author: Piotr Przybylski <piotrprz at gmail.com>
Date: Wed Jul 6 17:11:04 2011 +0200
Move ColumnTypes, AttributeTypes, Functions, RestrictColumnTypes, RestrictFunctions and DefaultFunctions to a separate file
commit 87a539aea7240e7563e47927f10000368a921e90
Author: Piotr Przybylski <piotrprz at gmail.com>
Date: Wed Jul 6 17:00:33 2011 +0200
Remove *Operators configuration variables
commit c9df5b273323d9e8af0f86d7ce72e0e6d1728b0d
Author: Piotr Przybylski <piotrprz at gmail.com>
Date: Wed Jul 6 16:33:27 2011 +0200
Removed unused variables
-----------------------------------------------------------------------
Summary of changes:
Documentation.html | 17 --
db_routines.php | 1 +
libraries/common.lib.php | 6 +-
libraries/config.default.php | 447 ++------------------------------------
libraries/data_mysql.inc.php | 276 +++++++++++++++++++++++
libraries/tbl_properties.inc.php | 3 +
tbl_change.php | 3 +
tbl_select.php | 74 +++++--
8 files changed, 356 insertions(+), 471 deletions(-)
create mode 100644 libraries/data_mysql.inc.php
diff --git a/Documentation.html b/Documentation.html
index 29054a2..0b3bd92 100644
--- a/Documentation.html
+++ b/Documentation.html
@@ -2392,23 +2392,6 @@ setfacl -d -m "g:www-data:rwx" tmp
<code>first_timestamp</code>, which is used for first timestamp column
in table.</dd>
- <dt id="cfg_NumOperators">$cfg['NumOperators'] array</dt>
- <dd>Operators available for search operations on numeric and date columns.
- </dd>
-
- <dt id="cfg_TextOperators">$cfg['TextOperators'] array</dt>
- <dd>Operators available for search operations on character columns.
- Note that we put <code>LIKE</code> by default instead of
- <code>LIKE %...%</code>, to avoid unintended performance problems
- in case of huge tables.</dd>
-
- <dt id="cfg_EnumOperators">$cfg['EnumOperators'] array</dt>
- <dd>Operators available for search operations on ENUM columns.</dd>
-
- <dt id="cfg_NullOperators">$cfg['NullOperators'] array</dt>
- <dd>Additional operators available for search operations when the
- column can be null.</dd>
-
</dl>
<!-- TRANSFORMATIONS -->
diff --git a/db_routines.php b/db_routines.php
index b9417fd..422ec76 100644
--- a/db_routines.php
+++ b/db_routines.php
@@ -13,6 +13,7 @@ require_once './libraries/common.inc.php';
require_once './libraries/common.lib.php';
require_once './libraries/db_routines.lib.php';
require_once './libraries/mysql_charsets.lib.php';
+require_once './libraries/data_mysql.inc.php';
/**
* Include JavaScript libraries
diff --git a/libraries/common.lib.php b/libraries/common.lib.php
index 61f3102..6d64cb6 100644
--- a/libraries/common.lib.php
+++ b/libraries/common.lib.php
@@ -2872,7 +2872,7 @@ function PMA_getSupportedDatatypes($html = false, $selected = '')
foreach ($cfg['ColumnTypes'] as $key => $value) {
if (is_array($value)) {
$retval .= "<optgroup label='" . htmlspecialchars($key) . "'>";
- foreach ($value as $subkey => $subvalue) {
+ foreach ($value as $subvalue) {
if ($subvalue == $selected) {
$retval .= "<option selected='selected'>";
$retval .= $subvalue;
@@ -2896,9 +2896,9 @@ function PMA_getSupportedDatatypes($html = false, $selected = '')
}
} else {
$retval = array();
- foreach ($cfg['ColumnTypes'] as $key => $value) {
+ foreach ($cfg['ColumnTypes'] as $value) {
if (is_array($value)) {
- foreach ($value as $subkey => $subvalue) {
+ foreach ($value as $subvalue) {
if ($subvalue !== '-') {
$retval[] = $subvalue;
}
diff --git a/libraries/config.default.php b/libraries/config.default.php
index 809a48d..d54dc5a 100644
--- a/libraries/config.default.php
+++ b/libraries/config.default.php
@@ -2740,379 +2740,50 @@ $cfg['DBG']['sql'] = false;
*/
/**
- * Column types;
- * VARCHAR, TINYINT, TEXT and DATE are listed first, based on estimated popularity
+ * Column types
+ *
+ * Fill in this array to overwrite data from data_*.inc.php files
*
* @global array $cfg['ColumnTypes']
*/
-$cfg['ColumnTypes'] = array(
- // most used
- 'INT',
- 'VARCHAR',
- 'TEXT',
- 'DATE',
-
- // numeric
- 'NUMERIC' => array(
- 'TINYINT',
- 'SMALLINT',
- 'MEDIUMINT',
- 'INT',
- 'BIGINT',
- '-',
- 'DECIMAL',
- 'FLOAT',
- 'DOUBLE',
- 'REAL',
- '-',
- 'BIT',
- 'BOOLEAN',
- 'SERIAL',
- ),
-
-
- // Date/Time
- 'DATE and TIME' => array(
- 'DATE',
- 'DATETIME',
- 'TIMESTAMP',
- 'TIME',
- 'YEAR',
- ),
-
- // Text
- 'STRING' => array(
- 'CHAR',
- 'VARCHAR',
- '-',
- 'TINYTEXT',
- 'TEXT',
- 'MEDIUMTEXT',
- 'LONGTEXT',
- '-',
- 'BINARY',
- 'VARBINARY',
- '-',
- 'TINYBLOB',
- 'MEDIUMBLOB',
- 'BLOB',
- 'LONGBLOB',
- '-',
- 'ENUM',
- 'SET',
- ),
-
- 'SPATIAL' => array(
- 'GEOMETRY',
- 'POINT',
- 'LINESTRING',
- 'POLYGON',
- 'MULTIPOINT',
- 'MULTILINESTRING',
- 'MULTIPOLYGON',
- 'GEOMETRYCOLLECTION',
- ),
-);
+$cfg['ColumnTypes'] = array();
/**
* Attributes
*
+ * Fill in this array to overwrite data from data_*.inc.php files
+ *
* @global array $cfg['AttributeTypes']
*/
-$cfg['AttributeTypes'] = array(
- '',
- 'BINARY',
- 'UNSIGNED',
- 'UNSIGNED ZEROFILL',
- 'on update CURRENT_TIMESTAMP',
-);
-
+$cfg['AttributeTypes'] = array();
if ($cfg['ShowFunctionFields']) {
/**
* Available functions
*
+ * Fill in this array to overwrite data from data_*.inc.php files
+ *
* @global array $cfg['Functions']
*/
- $cfg['Functions'] = array(
- 'ABS',
- 'ACOS',
- 'ASCII',
- 'ASIN',
- 'ATAN',
- 'BIN',
- 'BIT_COUNT',
- 'BIT_LENGTH',
- 'CEILING',
- 'CHAR',
- 'CHAR_LENGTH',
- 'COMPRESS',
- 'CONNECTION_ID',
- 'COS',
- 'COT',
- 'CRC32',
- 'CURDATE',
- 'CURRENT_USER',
- 'CURTIME',
- 'DATABASE',
- 'DATE',
- 'DAYNAME',
- 'DAYOFMONTH',
- 'DAYOFWEEK',
- 'DAYOFYEAR',
- 'DEGREES',
- 'DES_DECRYPT',
- 'DES_ENCRYPT',
- 'ENCRYPT',
- 'EXP',
- 'FLOOR',
- 'FROM_DAYS',
- 'FROM_UNIXTIME',
- 'HEX',
- 'HOUR',
- 'INET_ATON',
- 'INET_NTOA',
- 'LAST_DAY',
- 'LENGTH',
- 'LN',
- 'LOAD_FILE',
- 'LOG',
- 'LOG10',
- 'LOG2',
- 'LOWER',
- 'LTRIM',
- 'MD5',
- 'MICROSECOND',
- 'MINUTE',
- 'MONTH',
- 'MONTHNAME',
- 'NOW',
- 'OCT',
- 'OLD_PASSWORD',
- 'ORD',
- 'PASSWORD',
- 'PI',
- 'QUARTER',
- 'QUOTE',
- 'RADIANS',
- 'RAND',
- 'REVERSE',
- 'ROUND',
- 'RTRIM',
- 'SECOND',
- 'SEC_TO_TIME',
- 'SHA1',
- 'SIGN',
- 'SIN',
- 'SOUNDEX',
- 'SPACE',
- 'SQRT',
- 'SYSDATE',
- 'TAN',
- 'TIME',
- 'TIMESTAMP',
- 'TIME_TO_SEC',
- 'TO_DAYS',
- 'TRIM',
- 'UNCOMPRESS',
- 'UNCOMPRESSED_LENGTH',
- 'UNHEX',
- 'UNIX_TIMESTAMP',
- 'UPPER',
- 'USER',
- 'UTC_DATE',
- 'UTC_TIME',
- 'UTC_TIMESTAMP',
- 'UUID',
- 'VERSION',
- 'WEEK',
- 'WEEKDAY',
- 'WEEKOFYEAR',
- 'YEAR',
- 'YEARWEEK',
- );
+ $cfg['Functions'] = array();
/**
* Which column types will be mapped to which Group?
*
+ * Fill in this array to overwrite data from data_*.inc.php files
+ *
* @global array $cfg['RestrictColumnTypes']
*/
- $cfg['RestrictColumnTypes'] = array(
- 'TINYINT' => 'FUNC_NUMBER',
- 'SMALLINT' => 'FUNC_NUMBER',
- 'MEDIUMINT' => 'FUNC_NUMBER',
- 'INT' => 'FUNC_NUMBER',
- 'BIGINT' => 'FUNC_NUMBER',
- 'DECIMAL' => 'FUNC_NUMBER',
- 'FLOAT' => 'FUNC_NUMBER',
- 'DOUBLE' => 'FUNC_NUMBER',
- 'REAL' => 'FUNC_NUMBER',
- 'BIT' => 'FUNC_NUMBER',
- 'BOOLEAN' => 'FUNC_NUMBER',
- 'SERIAL' => 'FUNC_NUMBER',
-
- 'DATE' => 'FUNC_DATE',
- 'DATETIME' => 'FUNC_DATE',
- 'TIMESTAMP' => 'FUNC_DATE',
- 'TIME' => 'FUNC_DATE',
- 'YEAR' => 'FUNC_DATE',
-
- 'CHAR' => 'FUNC_CHAR',
- 'VARCHAR' => 'FUNC_CHAR',
- 'TINYTEXT' => 'FUNC_CHAR',
- 'TEXT' => 'FUNC_CHAR',
- 'MEDIUMTEXT' => 'FUNC_CHAR',
- 'LONGTEXT' => 'FUNC_CHAR',
- 'BINARY' => 'FUNC_CHAR',
- 'VARBINARY' => 'FUNC_CHAR',
- 'TINYBLOB' => 'FUNC_CHAR',
- 'MEDIUMBLOB' => 'FUNC_CHAR',
- 'BLOB' => 'FUNC_CHAR',
- 'LONGBLOB' => 'FUNC_CHAR',
- 'ENUM' => '',
- 'SET' => '',
-
- 'GEOMETRY' => 'FUNC_SPATIAL',
- 'POINT' => 'FUNC_SPATIAL',
- 'LINESTRING' => 'FUNC_SPATIAL',
- 'POLYGON' => 'FUNC_SPATIAL',
- 'MULTIPOINT' => 'FUNC_SPATIAL',
- 'MULTILINESTRING' => 'FUNC_SPATIAL',
- 'MULTIPOLYGON' => 'FUNC_SPATIAL',
- 'GEOMETRYCOLLECTION' => 'FUNC_SPATIAL',
-
- );
+ $cfg['RestrictColumnTypes'] = array();
/**
* Map above defined groups to any function
*
+ * Fill in this array to overwrite data from data_*.inc.php files
+ *
* @global array $cfg['RestrictFunctions']
*/
- $cfg['RestrictFunctions'] = array(
- 'FUNC_CHAR' => array(
- 'BIN',
- 'CHAR',
- 'CURRENT_USER',
- 'COMPRESS',
- 'DATABASE',
- 'DAYNAME',
- 'DES_DECRYPT',
- 'DES_ENCRYPT',
- 'ENCRYPT',
- 'HEX',
- 'INET_NTOA',
- 'LOAD_FILE',
- 'LOWER',
- 'LTRIM',
- 'MD5',
- 'MONTHNAME',
- 'OLD_PASSWORD',
- 'PASSWORD',
- 'QUOTE',
- 'REVERSE',
- 'RTRIM',
- 'SHA1',
- 'SOUNDEX',
- 'SPACE',
- 'TRIM',
- 'UNCOMPRESS',
- 'UNHEX',
- 'UPPER',
- 'USER',
- 'UUID',
- ),
-
- 'FUNC_DATE' => array(
- 'CURDATE',
- 'CURTIME',
- 'DATE',
- 'FROM_DAYS',
- 'FROM_UNIXTIME',
- 'LAST_DAY',
- 'NOW',
- 'SEC_TO_TIME',
- 'SYSDATE',
- 'TIME',
- 'TIMESTAMP',
- 'UTC_DATE',
- 'UTC_TIME',
- 'UTC_TIMESTAMP',
- 'YEAR',
- ),
-
- 'FUNC_NUMBER' => array(
- 'ABS',
- 'ACOS',
- 'ASCII',
- 'ASIN',
- 'ATAN',
- 'BIT_LENGTH',
- 'BIT_COUNT',
- 'CEILING',
- 'CHAR_LENGTH',
- 'CONNECTION_ID',
- 'COS',
- 'COT',
- 'CRC32',
- 'DAYOFMONTH',
- 'DAYOFWEEK',
- 'DAYOFYEAR',
- 'DEGREES',
- 'EXP',
- 'FLOOR',
- 'HOUR',
- 'INET_ATON',
- 'LENGTH',
- 'LN',
- 'LOG',
- 'LOG2',
- 'LOG10',
- 'MICROSECOND',
- 'MINUTE',
- 'MONTH',
- 'OCT',
- 'ORD',
- 'PI',
- 'QUARTER',
- 'RADIANS',
- 'RAND',
- 'ROUND',
- 'SECOND',
- 'SIGN',
- 'SIN',
- 'SQRT',
- 'TAN',
- 'TO_DAYS',
- 'TIME_TO_SEC',
- 'UNCOMPRESSED_LENGTH',
- 'UNIX_TIMESTAMP',
- 'WEEK',
- 'WEEKDAY',
- 'WEEKOFYEAR',
- 'YEARWEEK',
- ),
-
- 'FUNC_SPATIAL' => array(
- 'GeomFromText',
- 'GeomFromWKB',
-
- 'GeomCollFromText',
- 'LineFromText',
- 'MLineFromText',
- 'PointFromText',
- 'MPointFromText',
- 'PolyFromText',
- 'MPolyFromText',
-
- 'GeomCollFromWKB',
- 'LineFromWKB',
- 'MLineFromWKB',
- 'PointFromWKB',
- 'MPointFromWKB',
- 'PolyFromWKB',
- 'MPolyFromWKB',
- ),
- );
+ $cfg['RestrictFunctions'] = array();
/**
* Default functions for above defined groups
@@ -3126,90 +2797,6 @@ if ($cfg['ShowFunctionFields']) {
'first_timestamp' => 'NOW',
'pk_char36' => 'UUID',
);
-} // end if
-
-/**
- * Search operators
- *
- * @global array $cfg['NumOperators']
- */
-$cfg['NumOperators'] = array(
- '=',
- '>',
- '>=',
- '<',
- '<=',
- '!=',
- 'LIKE',
- 'NOT LIKE',
- 'IN (...)',
- 'NOT IN (...)',
- 'BETWEEN',
- 'NOT BETWEEN',
-);
-
-/**
- * Search operators
- *
- * @global array $cfg['TextOperators']
- */
-$cfg['TextOperators'] = array(
- 'LIKE',
- 'LIKE %...%',
- 'NOT LIKE',
- '=',
- '!=',
- 'REGEXP',
- 'REGEXP ^...$',
- 'NOT REGEXP',
- "= ''",
- "!= ''",
- 'IN (...)',
- 'NOT IN (...)',
- 'BETWEEN',
- 'NOT BETWEEN',
-);
-
-/**
- * Search operators
- *
- * @global array $cfg['EnumOperators']
- */
-$cfg['EnumOperators'] = array(
- '=',
- '!=',
-);
-
-/**
- * Search operators
- *
- * @global array $cfg['SetOperators']
- */
-$cfg['SetOperators'] = array(
- 'IN',
- 'NOT IN',
-);
-
-/**
- * Search operators
- *
- * @global array $cfg['NullOperators']
- */
-$cfg['NullOperators'] = array(
- 'IS NULL',
- 'IS NOT NULL',
-);
-
-/**
- * Search operators
- *
- * @global array $cfg['UnaryOperators']
- */
-$cfg['UnaryOperators'] = array(
- 'IS NULL' => 1,
- 'IS NOT NULL' => 1,
- "= ''" => 1,
- "!= ''" => 1
-);
+}
?>
diff --git a/libraries/data_mysql.inc.php b/libraries/data_mysql.inc.php
new file mode 100644
index 0000000..e457d57
--- /dev/null
+++ b/libraries/data_mysql.inc.php
@@ -0,0 +1,276 @@
+<?php
+/**
+ * Column types and functions supported by MySQL
+ *
+ * @package phpMyAdmin
+ */
+
+// VARCHAR, TINYINT, TEXT and DATE are listed first, based on estimated popularity
+$cfg['ColumnTypes'] = !empty($cfg['ColumnTypes']) ? $cfg['ColumnTypes'] : array(
+ // most used
+ 'INT',
+ 'VARCHAR',
+ 'TEXT',
+ 'DATE',
+
+ // numeric
+ 'NUMERIC' => array(
+ 'TINYINT',
+ 'SMALLINT',
+ 'MEDIUMINT',
+ 'INT',
+ 'BIGINT',
+ '-',
+ 'DECIMAL',
+ 'FLOAT',
+ 'DOUBLE',
+ 'REAL',
+ '-',
+ 'BIT',
+ 'BOOLEAN',
+ 'SERIAL',
+ ),
+
+
+ // Date/Time
+ 'DATE and TIME' => array(
+ 'DATE',
+ 'DATETIME',
+ 'TIMESTAMP',
+ 'TIME',
+ 'YEAR',
+ ),
+
+ // Text
+ 'STRING' => array(
+ 'CHAR',
+ 'VARCHAR',
+ '-',
+ 'TINYTEXT',
+ 'TEXT',
+ 'MEDIUMTEXT',
+ 'LONGTEXT',
+ '-',
+ 'BINARY',
+ 'VARBINARY',
+ '-',
+ 'TINYBLOB',
+ 'MEDIUMBLOB',
+ 'BLOB',
+ 'LONGBLOB',
+ '-',
+ 'ENUM',
+ 'SET',
+ ),
+
+ 'SPATIAL' => array(
+ 'GEOMETRY',
+ 'POINT',
+ 'LINESTRING',
+ 'POLYGON',
+ 'MULTIPOINT',
+ 'MULTILINESTRING',
+ 'MULTIPOLYGON',
+ 'GEOMETRYCOLLECTION',
+ ),
+);
+
+$cfg['AttributeTypes'] = !empty($cfg['AttributeTypes']) ? $cfg['AttributeTypes'] : array(
+ '',
+ 'BINARY',
+ 'UNSIGNED',
+ 'UNSIGNED ZEROFILL',
+ 'on update CURRENT_TIMESTAMP',
+);
+
+if ($cfg['ShowFunctionFields']) {
+ $cfg['RestrictColumnTypes'] = !empty($cfg['RestrictColumnTypes']) ? $cfg['RestrictColumnTypes'] : array(
+ 'TINYINT' => 'FUNC_NUMBER',
+ 'SMALLINT' => 'FUNC_NUMBER',
+ 'MEDIUMINT' => 'FUNC_NUMBER',
+ 'INT' => 'FUNC_NUMBER',
+ 'BIGINT' => 'FUNC_NUMBER',
+ 'DECIMAL' => 'FUNC_NUMBER',
+ 'FLOAT' => 'FUNC_NUMBER',
+ 'DOUBLE' => 'FUNC_NUMBER',
+ 'REAL' => 'FUNC_NUMBER',
+ 'BIT' => 'FUNC_NUMBER',
+ 'BOOLEAN' => 'FUNC_NUMBER',
+ 'SERIAL' => 'FUNC_NUMBER',
+
+ 'DATE' => 'FUNC_DATE',
+ 'DATETIME' => 'FUNC_DATE',
+ 'TIMESTAMP' => 'FUNC_DATE',
+ 'TIME' => 'FUNC_DATE',
+ 'YEAR' => 'FUNC_DATE',
+
+ 'CHAR' => 'FUNC_CHAR',
+ 'VARCHAR' => 'FUNC_CHAR',
+ 'TINYTEXT' => 'FUNC_CHAR',
+ 'TEXT' => 'FUNC_CHAR',
+ 'MEDIUMTEXT' => 'FUNC_CHAR',
+ 'LONGTEXT' => 'FUNC_CHAR',
+ 'BINARY' => 'FUNC_CHAR',
+ 'VARBINARY' => 'FUNC_CHAR',
+ 'TINYBLOB' => 'FUNC_CHAR',
+ 'MEDIUMBLOB' => 'FUNC_CHAR',
+ 'BLOB' => 'FUNC_CHAR',
+ 'LONGBLOB' => 'FUNC_CHAR',
+ 'ENUM' => '',
+ 'SET' => '',
+
+ 'GEOMETRY' => 'FUNC_SPATIAL',
+ 'POINT' => 'FUNC_SPATIAL',
+ 'LINESTRING' => 'FUNC_SPATIAL',
+ 'POLYGON' => 'FUNC_SPATIAL',
+ 'MULTIPOINT' => 'FUNC_SPATIAL',
+ 'MULTILINESTRING' => 'FUNC_SPATIAL',
+ 'MULTIPOLYGON' => 'FUNC_SPATIAL',
+ 'GEOMETRYCOLLECTION' => 'FUNC_SPATIAL',
+
+ );
+
+ $restrict_functions = array(
+ 'FUNC_CHAR' => array(
+ 'BIN',
+ 'CHAR',
+ 'CURRENT_USER',
+ 'COMPRESS',
+ 'DATABASE',
+ 'DAYNAME',
+ 'DES_DECRYPT',
+ 'DES_ENCRYPT',
+ 'ENCRYPT',
+ 'HEX',
+ 'INET_NTOA',
+ 'LOAD_FILE',
+ 'LOWER',
+ 'LTRIM',
+ 'MD5',
+ 'MONTHNAME',
+ 'OLD_PASSWORD',
+ 'PASSWORD',
+ 'QUOTE',
+ 'REVERSE',
+ 'RTRIM',
+ 'SHA1',
+ 'SOUNDEX',
+ 'SPACE',
+ 'TRIM',
+ 'UNCOMPRESS',
+ 'UNHEX',
+ 'UPPER',
+ 'USER',
+ 'UUID',
+ 'VERSION',
+ ),
+
+ 'FUNC_DATE' => array(
+ 'CURDATE',
+ 'CURTIME',
+ 'DATE',
+ 'FROM_DAYS',
+ 'FROM_UNIXTIME',
+ 'LAST_DAY',
+ 'NOW',
+ 'SEC_TO_TIME',
+ 'SYSDATE',
+ 'TIME',
+ 'TIMESTAMP',
+ 'UTC_DATE',
+ 'UTC_TIME',
+ 'UTC_TIMESTAMP',
+ 'YEAR',
+ ),
+
+ 'FUNC_NUMBER' => array(
+ 'ABS',
+ 'ACOS',
+ 'ASCII',
+ 'ASIN',
+ 'ATAN',
+ 'BIT_LENGTH',
+ 'BIT_COUNT',
+ 'CEILING',
+ 'CHAR_LENGTH',
+ 'CONNECTION_ID',
+ 'COS',
+ 'COT',
+ 'CRC32',
+ 'DAYOFMONTH',
+ 'DAYOFWEEK',
+ 'DAYOFYEAR',
+ 'DEGREES',
+ 'EXP',
+ 'FLOOR',
+ 'HOUR',
+ 'INET_ATON',
+ 'LENGTH',
+ 'LN',
+ 'LOG',
+ 'LOG2',
+ 'LOG10',
+ 'MICROSECOND',
+ 'MINUTE',
+ 'MONTH',
+ 'OCT',
+ 'ORD',
+ 'PI',
+ 'QUARTER',
+ 'RADIANS',
+ 'RAND',
+ 'ROUND',
+ 'SECOND',
+ 'SIGN',
+ 'SIN',
+ 'SQRT',
+ 'TAN',
+ 'TO_DAYS',
+ 'TIME_TO_SEC',
+ 'UNCOMPRESSED_LENGTH',
+ 'UNIX_TIMESTAMP',
+ 'WEEK',
+ 'WEEKDAY',
+ 'WEEKOFYEAR',
+ 'YEARWEEK',
+ ),
+
+ 'FUNC_SPATIAL' => array(
+ 'GeomFromText',
+ 'GeomFromWKB',
+
+ 'GeomCollFromText',
+ 'LineFromText',
+ 'MLineFromText',
+ 'PointFromText',
+ 'MPointFromText',
+ 'PolyFromText',
+ 'MPolyFromText',
+
+ 'GeomCollFromWKB',
+ 'LineFromWKB',
+ 'MLineFromWKB',
+ 'PointFromWKB',
+ 'MPointFromWKB',
+ 'PolyFromWKB',
+ 'MPolyFromWKB',
+ ),
+ );
+ if (empty($cfg['RestrictFunctions'])) {
+ $cfg['RestrictFunctions'] = $restrict_functions;
+ }
+
+ if (empty($cfg['Functions'])) {
+ // build a list of functions based on $restrict_functions
+ $cfg['Functions'] = array();
+ foreach ($restrict_functions as $cat => $functions) {
+ if ($cat != 'FUNC_SPATIAL') {
+ $cfg['Functions'] = array_merge($cfg['Functions'], $functions);
+ }
+ }
+ sort($cfg['Functions']);
+ }
+ unset($restrict_functions);
+} // end if
+
+?>
\ No newline at end of file
diff --git a/libraries/tbl_properties.inc.php b/libraries/tbl_properties.inc.php
index 4cfd48a..f4ade94 100644
--- a/libraries/tbl_properties.inc.php
+++ b/libraries/tbl_properties.inc.php
@@ -27,6 +27,9 @@ require_once './libraries/StorageEngine.class.php';
*/
require_once './libraries/Partition.class.php';
+// load additional configuration variables
+require_once './libraries/data_mysql.inc.php';
+
if (is_int($cfg['DefaultPropDisplay'])) {
if ($num_fields <= $cfg['DefaultPropDisplay']) {
$display_type = 'vertical';
diff --git a/tbl_change.php b/tbl_change.php
index 94c7da0..7d5bba3 100644
--- a/tbl_change.php
+++ b/tbl_change.php
@@ -19,6 +19,9 @@ require_once './libraries/common.lib.php';
*/
require_once './libraries/db_table_exists.lib.php';
+// load additional configuration variables
+require_once './libraries/data_mysql.inc.php';
+
/**
* Sets global variables.
* Here it's better to use a if, instead of the '?' operator
diff --git a/tbl_select.php b/tbl_select.php
index 33b7e48..52e8b93 100644
--- a/tbl_select.php
+++ b/tbl_select.php
@@ -129,31 +129,57 @@ if (! isset($param) || $param[0] == '') {
<td><?php echo $fields_collation[$i]; ?></td>
<td><select name="func[]">
<?php
+ // determine valid operators
if (strncasecmp($fields_type[$i], 'enum', 4) == 0) {
- foreach ($GLOBALS['cfg']['EnumOperators'] as $fc) {
- echo "\n" . ' '
- . '<option value="' . htmlspecialchars($fc) . '">'
- . htmlspecialchars($fc) . '</option>';
- }
+ // enum operators
+ $operators = array(
+ '=',
+ '!=',
+ );
} elseif (preg_match('@char|blob|text|set at i', $fields_type[$i])) {
- foreach ($GLOBALS['cfg']['TextOperators'] as $fc) {
- echo "\n" . ' '
- . '<option value="' . htmlspecialchars($fc) . '">'
- . htmlspecialchars($fc) . '</option>';
- }
+ // text operators
+ $operators = array(
+ 'LIKE',
+ 'LIKE %...%',
+ 'NOT LIKE',
+ '=',
+ '!=',
+ 'REGEXP',
+ 'REGEXP ^...$',
+ 'NOT REGEXP',
+ "= ''",
+ "!= ''",
+ 'IN (...)',
+ 'NOT IN (...)',
+ 'BETWEEN',
+ 'NOT BETWEEN',
+ );
} else {
- foreach ($GLOBALS['cfg']['NumOperators'] as $fc) {
- echo "\n" . ' '
- . '<option value="' . htmlspecialchars($fc) . '">'
- . htmlspecialchars($fc) . '</option>';
- }
+ // numeric operators
+ $operators = array(
+ '=',
+ '>',
+ '>=',
+ '<',
+ '<=',
+ '!=',
+ 'LIKE',
+ 'NOT LIKE',
+ 'IN (...)',
+ 'NOT IN (...)',
+ 'BETWEEN',
+ 'NOT BETWEEN',
+ );
} // end if... else...
+
+ // if field can be NULL, add IS NULL and IS NOT NULL
if ($fields_null[$i]) {
- foreach ($GLOBALS['cfg']['NullOperators'] as $fc) {
- echo "\n" . ' '
- . '<option value="' . htmlspecialchars($fc) . '">'
- . htmlspecialchars($fc) . '</option>';
- }
+ $operators[] = 'IS NULL';
+ $operators[] = 'IS NOT NULL';
+ }
+ foreach ($operators as $op) {
+ echo "\n" . ' '
+ . '<option value="' . htmlspecialchars($op) . '">' . htmlspecialchars($op) . '</option>';
}
?>
@@ -327,11 +353,17 @@ else {
$sql_query .= ' WHERE ' . $where;
} else {
$w = $charsets = array();
+ $unary_operators = array(
+ 'IS NULL' => 1,
+ 'IS NOT NULL' => 1,
+ "= ''" => 1,
+ "!= ''" => 1
+ );
$cnt_func = count($func);
reset($func);
while (list($i, $func_type) = each($func)) {
list($charsets[$i]) = explode('_', $collations[$i]);
- if (isset($GLOBALS['cfg']['UnaryOperators'][$func_type]) && $GLOBALS['cfg']['UnaryOperators'][$func_type] == 1) {
+ if (isset($unary_operators[$func_type])) {
$fields[$i] = '';
$w[] = PMA_backquote($names[$i]) . ' ' . $func_type;
hooks/post-receive
--
phpMyAdmin
More information about the Git
mailing list