From 87259360db5aaba6f4b82c9f08bfd13145c057e5 Mon Sep 17 00:00:00 2001 From: Willian Gustavo Veiga Date: Tue, 24 Apr 2012 22:25:15 -0300 Subject: [PATCH 1/4] Data types descriptions --- libraries/common.lib.php | 28 +++++++++++++++---- libraries/data_drizzle.inc.php | 28 +++++++++++++++++++ libraries/data_mysql.inc.php | 51 ++++++++++++++++++++++++++++++++++ 3 files changed, 101 insertions(+), 6 deletions(-) diff --git a/libraries/common.lib.php b/libraries/common.lib.php index 238fb249e6..298646cbfd 100644 --- a/libraries/common.lib.php +++ b/libraries/common.lib.php @@ -3402,8 +3402,7 @@ function PMA_buildActionTitles() /** * This function processes the datatypes supported by the DB, as specified in * $cfg['ColumnTypes'] and either returns an array (useful for quickly checking - * if a datatype is supported) or an HTML snippet that creates a drop-down - * list. + * if a datatype is supported) or an HTML snippet that creates a drop-down list. * * @param bool $html Whether to generate an html snippet or an array * @param string $selected The value to mark as selected in HTML mode @@ -3423,7 +3422,7 @@ function PMA_getSupportedDatatypes($html = false, $selected = '') $retval .= ""; foreach ($value as $subvalue) { if ($subvalue == $selected) { - $retval .= ""; } else if ($subvalue === '-') { @@ -3431,15 +3430,15 @@ function PMA_getSupportedDatatypes($html = false, $selected = '') $retval .= $subvalue; $retval .= ""; } else { - $retval .= ""; + $retval .= ""; } } $retval .= ''; } else { if ($selected == $value) { - $retval .= ""; + $retval .= ""; } else { - $retval .= ""; + $retval .= ""; } } } @@ -3463,6 +3462,23 @@ function PMA_getSupportedDatatypes($html = false, $selected = '') return $retval; } // end PMA_getSupportedDatatypes() +/** + * This function returns the data type description. + * + * @param string $type The data type to get a description. + * + * @return string + * + */ +function PMA_getDatatypeDescription($type) +{ + $type = strtoupper($type); + $descriptions = SupportedDataTypesDescriptions(); + + return isset($descriptions[$type]) + ? htmlentities($descriptions[$type], ENT_QUOTES) : ''; +} // end PMA_getDatatypeDescription() + /** * Returns a list of datatypes that are not (yet) handled by PMA. * Used by: tbl_change.php and libraries/db_routines.inc.php diff --git a/libraries/data_drizzle.inc.php b/libraries/data_drizzle.inc.php index a1a1bffeab..df211bf688 100644 --- a/libraries/data_drizzle.inc.php +++ b/libraries/data_drizzle.inc.php @@ -226,4 +226,32 @@ if ($cfg['ShowFunctionFields']) { unset($restrict_functions); } // end if +/** + * This function returns datatypes descriptions. + * + * @return array Drizzle datatypes descriptions. + * + */ +function SupportedDataTypesDescriptions() +{ + return array( + 'INTEGER' => __('Most common integer.'), + 'BIGINT' => __('Larger-range integer.'), + 'DECIMAL' => __('Fixed precision number.'), + 'DOUBLE' => __('Systems native double type.'), + 'BOOLEAN' => __('True or false.'), + 'SERIAL' => __('A number is inserted in increasing order as rows are inserted into the table.'), + 'UUID' => __('Stores Universally Unique Identifiers (UUID).'), + 'DATE' => __('Dates only.'), + 'DATETIME' => __('Both date and time.'), + 'TIMESTAMP' => __('Both date and time.'), + 'TIME' => __('Time of day.'), + 'VARCHAR' => __('Variable length data.'), + 'TEXT' => __('Data which is over XXX in size'), + 'VARBINARY' => __('Variable length data.'), + 'BLOB' => __('Data which is over XXX in size. Uses a binary collation for all index usage.'), + 'ENUM' => __('Static lists of strings.'), + ); +} // end SupportedDataTypesDescriptions() + ?> diff --git a/libraries/data_mysql.inc.php b/libraries/data_mysql.inc.php index b3b44f8fa2..a507c1db05 100644 --- a/libraries/data_mysql.inc.php +++ b/libraries/data_mysql.inc.php @@ -287,4 +287,55 @@ if ($cfg['ShowFunctionFields']) { unset($restrict_functions); } // end if +/** + * This function returns datatypes descriptions. + * + * @return array MySQL datatypes descriptions. + * + */ +function SupportedDataTypesDescriptions() +{ + return array( + 'TINYINT' => __('A very small integer. The signed range is -128 to 127. The unsigned range is 0 to 255.'), + 'SMALLINT' => __('A small integer. The signed range is -32768 to 32767. The unsigned range is 0 to 65535.'), + 'MEDIUMINT' => __('A medium-sized integer. The signed range is -8388608 to 8388607. The unsigned range is 0 to 16777215.'), + 'INT' => __('A normal-size integer. The signed range is -2147483648 to 2147483647. The unsigned range is 0 to 4294967295.'), + 'BIGINT' => __('A large integer. The signed range is -9223372036854775808 to 9223372036854775807. The unsigned range is 0 to 18446744073709551615.'), + 'DECIMAL' => __('A packed "exact" fixed-point number. The maximum number of digits (M) for DECIMAL is 65. The maximum number of supported decimals (D) is 30. If D is omitted, the default is 0. If M is omitted, the default is 10.'), + 'FLOAT' => __('A small (single-precision) floating-point number. Allowable values are -3.402823466E+38 to -1.175494351E-38, 0, and 1.175494351E-38 to 3.402823466E+38.'), + 'DOUBLE' => __('A normal-size (double-precision) floating-point number. Allowable values are -1.7976931348623157E+308 to -2.2250738585072014E-308, 0, and 2.2250738585072014E-308 to 1.7976931348623157E+308.'), + 'REAL' => __('Synonyms for DOUBLE. Exception: If the REAL_AS_FLOAT SQL mode is enabled, REAL is a synonym for FLOAT rather than DOUBLE.'), + 'BIT' => __('A bit-field type. M indicates the number of bits per value, from 1 to 64. The default is 1 if M is omitted.'), + 'BOOLEAN' => __('These types are synonyms for TINYINT(1). A value of zero is considered false. Nonzero values are considered true.'), + 'SERIAL' => __('An alias for BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE.'), + 'DATE' => __("A date. The supported range is '1000-01-01' to '9999-12-31'. MySQL displays DATE values in 'YYYY-MM-DD' format, but allows assignment of values to DATE columns using either strings or numbers."), + 'DATETIME' => __("A date and time combination. The supported range is '1000-01-01 00:00:00' to '9999-12-31 23:59:59'. MySQL displays DATETIME values in 'YYYY-MM-DD HH:MM:SS' format, but allows assignment of values to DATETIME columns using either strings or numbers."), + 'TIMESTAMP' => __("A timestamp. The range is '1970-01-01 00:00:01' UTC to '2038-01-09 03:14:07' UTC. TIMESTAMP values are stored as the number of seconds since the epoch ('1970-01-01 00:00:00' UTC)."), + 'TIME' => __("A time. The range is '-838:59:59' to '838:59:59'. MySQL displays TIME values in 'HH:MM:SS' format, but allows assignment of values to TIME columns using either strings or numbers."), + 'YEAR' => __("A year in two-digit or four-digit format. The default is four-digit format. In four-digit format, the allowable values are 1901 to 2155, and 0000. In two-digit format, the allowable values are 70 to 69, representing years from 1970 to 2069."), + 'CHAR' => __('A fixed-length string that is always right-padded with spaces to the specified length when stored. M represents the column length in characters. The range of M is 0 to 255. If M is omitted, the length is 1.'), + 'VARCHAR' => __('A variable-length string. M represents the maximum column length in characters. The range of M is 0 to 65,535.'), + 'TINYTEXT' => __('A TEXT column with a maximum length of 255 (28 - 1) characters. Each TINYTEXT value is stored using a one-byte length prefix that indicates the number of bytes in the value.'), + 'TEXT' => __('A TEXT column with a maximum length of 65,535 (2^16 - 1) characters. Each TEXT value is stored using a two-byte length prefix that indicates the number of bytes in the value.'), + 'MEDIUMTEXT' => __('A TEXT column with a maximum length of 16,777,215 (224 - 1) characters. Each MEDIUMTEXT value is stored using a three-byte length prefix that indicates the number of bytes in the value.'), + 'LONGTEXT' => __('A TEXT column with a maximum length of 4,294,967,295 or 4GB (232 - 1) characters. Each LONGTEXT value is stored using a four-byte length prefix that indicates the number of bytes in the value.'), + 'BINARY' => __('The BINARY type is similar to the CHAR type, but stores binary byte strings rather than non-binary character strings. M represents the column length in bytes.'), + 'VARBINARY' => __('The VARBINARY type is similar to the VARCHAR type, but stores binary byte strings rather than non-binary character strings. M represents the maximum column length in bytes.'), + 'TINYBLOB' => __('A BLOB column with a maximum length of 255 (28 - 1) bytes. Each TINYBLOB value is stored using a one-byte length prefix that indicates the number of bytes in the value.'), + 'MEDIUMBLOB' => __('A BLOB column with a maximum length of 16,777,215 (224 - 1) bytes. Each MEDIUMBLOB value is stored using a three-byte length prefix that indicates the number of bytes in the value.'), + 'BLOB' => __('A BLOB column with a maximum length of 65,535 (2^16 - 1) bytes. Each BLOB value is stored using a two-byte length prefix that indicates the number of bytes in the value.'), + 'LONGBLOB' => __('A BLOB column with a maximum length of 4,294,967,295 or 4GB (232 - 1) bytes. Each LONGBLOB value is stored using a four-byte length prefix that indicates the number of bytes in the value.'), + 'ENUM' => __("An enumeration. A string object that can have only one value, chosen from the list of values 'value1', 'value2', ..., NULL or the special '' error value. An ENUM column can have a maximum of 65,535 distinct values."), + 'SET' => __("A set. A string object that can have zero or more values, each of which must be chosen from the list of values 'value1', 'value2', ... A SET column can have a maximum of 64 members."), + 'GEOMETRY' => '', + 'POINT' => __('Constructs a WKB Point using its coordinates.'), + 'LINESTRING' => __('Constructs a WKB LineString value from a number of WKB Point arguments. If any argument is not a WKB Point, the return value is NULL. If the number of Point arguments is less than two, the return value is NULL.'), + 'POLYGON' => __('Constructs a WKB Polygon value from a number of WKB LineString arguments. If any argument does not represent the WKB of a LinearRing (that is, not a closed and simple LineString) the return value is NULL.'), + 'MULTIPOINT' => __('Constructs a WKB MultiPoint value using WKB Point arguments. If any argument is not a WKB Point, the return value is NULL.'), + 'MULTILINESTRING' => __('Constructs a WKB MultiLineString value using WKB LineString arguments. If any argument is not a WKB LineString, the return value is NULL.'), + 'MULTIPOLYGON' => __('Constructs a WKB MultiPolygon value from a set of WKB Polygon arguments. If any argument is not a WKB Polygon, the return value is NULL.'), + 'GEOMETRYCOLLECTION' => __('Constructs a WKB GeometryCollection. If any argument is not a well-formed WKB representation of a geometry, the return value is NULL.'), + ); +} // end SupportedDataTypesDescriptions() + ?> From c90859d51b3b620744b446905dcf4e6531130381 Mon Sep 17 00:00:00 2001 From: Willian Gustavo Veiga Date: Wed, 25 Apr 2012 08:11:14 -0300 Subject: [PATCH 2/4] Missing function prefix (PMA_) added. --- libraries/common.lib.php | 2 +- libraries/data_drizzle.inc.php | 4 ++-- libraries/data_mysql.inc.php | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/libraries/common.lib.php b/libraries/common.lib.php index 298646cbfd..24a23cd428 100644 --- a/libraries/common.lib.php +++ b/libraries/common.lib.php @@ -3473,7 +3473,7 @@ function PMA_getSupportedDatatypes($html = false, $selected = '') function PMA_getDatatypeDescription($type) { $type = strtoupper($type); - $descriptions = SupportedDataTypesDescriptions(); + $descriptions = PMA_supportedDataTypesDescriptions(); return isset($descriptions[$type]) ? htmlentities($descriptions[$type], ENT_QUOTES) : ''; diff --git a/libraries/data_drizzle.inc.php b/libraries/data_drizzle.inc.php index df211bf688..71cf649398 100644 --- a/libraries/data_drizzle.inc.php +++ b/libraries/data_drizzle.inc.php @@ -232,7 +232,7 @@ if ($cfg['ShowFunctionFields']) { * @return array Drizzle datatypes descriptions. * */ -function SupportedDataTypesDescriptions() +function PMA_supportedDataTypesDescriptions() { return array( 'INTEGER' => __('Most common integer.'), @@ -252,6 +252,6 @@ function SupportedDataTypesDescriptions() 'BLOB' => __('Data which is over XXX in size. Uses a binary collation for all index usage.'), 'ENUM' => __('Static lists of strings.'), ); -} // end SupportedDataTypesDescriptions() +} // end PMA_supportedDataTypesDescriptions() ?> diff --git a/libraries/data_mysql.inc.php b/libraries/data_mysql.inc.php index a507c1db05..fa00cd8bee 100644 --- a/libraries/data_mysql.inc.php +++ b/libraries/data_mysql.inc.php @@ -293,7 +293,7 @@ if ($cfg['ShowFunctionFields']) { * @return array MySQL datatypes descriptions. * */ -function SupportedDataTypesDescriptions() +function PMA_supportedDataTypesDescriptions() { return array( 'TINYINT' => __('A very small integer. The signed range is -128 to 127. The unsigned range is 0 to 255.'), @@ -336,6 +336,6 @@ function SupportedDataTypesDescriptions() 'MULTIPOLYGON' => __('Constructs a WKB MultiPolygon value from a set of WKB Polygon arguments. If any argument is not a WKB Polygon, the return value is NULL.'), 'GEOMETRYCOLLECTION' => __('Constructs a WKB GeometryCollection. If any argument is not a well-formed WKB representation of a geometry, the return value is NULL.'), ); -} // end SupportedDataTypesDescriptions() +} // end PMA_supportedDataTypesDescriptions() ?> From f3ac6f623c1f15224b74502061f23af7b5463c77 Mon Sep 17 00:00:00 2001 From: Willian Gustavo Veiga Date: Wed, 25 Apr 2012 08:37:11 -0300 Subject: [PATCH 3/4] Missing commas in the numbers added. --- libraries/data_mysql.inc.php | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/libraries/data_mysql.inc.php b/libraries/data_mysql.inc.php index fa00cd8bee..804dfcbb7b 100644 --- a/libraries/data_mysql.inc.php +++ b/libraries/data_mysql.inc.php @@ -297,10 +297,10 @@ function PMA_supportedDataTypesDescriptions() { return array( 'TINYINT' => __('A very small integer. The signed range is -128 to 127. The unsigned range is 0 to 255.'), - 'SMALLINT' => __('A small integer. The signed range is -32768 to 32767. The unsigned range is 0 to 65535.'), - 'MEDIUMINT' => __('A medium-sized integer. The signed range is -8388608 to 8388607. The unsigned range is 0 to 16777215.'), - 'INT' => __('A normal-size integer. The signed range is -2147483648 to 2147483647. The unsigned range is 0 to 4294967295.'), - 'BIGINT' => __('A large integer. The signed range is -9223372036854775808 to 9223372036854775807. The unsigned range is 0 to 18446744073709551615.'), + 'SMALLINT' => __('A small integer. The signed range is -32,768 to 32,767. The unsigned range is 0 to 65,535.'), + 'MEDIUMINT' => __('A medium-sized integer. The signed range is -8,388,608 to 8,388,607. The unsigned range is 0 to 16,777,215.'), + 'INT' => __('A normal-size integer. The signed range is -2,147,483,648 to 2,147,483,647. The unsigned range is 0 to 4,294,967,295.'), + 'BIGINT' => __('A large integer. The signed range is -9223372036854775808 to 9223372036854775807. The unsigned range is 0 to 18,446,744,073,709,551,615.'), 'DECIMAL' => __('A packed "exact" fixed-point number. The maximum number of digits (M) for DECIMAL is 65. The maximum number of supported decimals (D) is 30. If D is omitted, the default is 0. If M is omitted, the default is 10.'), 'FLOAT' => __('A small (single-precision) floating-point number. Allowable values are -3.402823466E+38 to -1.175494351E-38, 0, and 1.175494351E-38 to 3.402823466E+38.'), 'DOUBLE' => __('A normal-size (double-precision) floating-point number. Allowable values are -1.7976931348623157E+308 to -2.2250738585072014E-308, 0, and 2.2250738585072014E-308 to 1.7976931348623157E+308.'), @@ -315,16 +315,16 @@ function PMA_supportedDataTypesDescriptions() 'YEAR' => __("A year in two-digit or four-digit format. The default is four-digit format. In four-digit format, the allowable values are 1901 to 2155, and 0000. In two-digit format, the allowable values are 70 to 69, representing years from 1970 to 2069."), 'CHAR' => __('A fixed-length string that is always right-padded with spaces to the specified length when stored. M represents the column length in characters. The range of M is 0 to 255. If M is omitted, the length is 1.'), 'VARCHAR' => __('A variable-length string. M represents the maximum column length in characters. The range of M is 0 to 65,535.'), - 'TINYTEXT' => __('A TEXT column with a maximum length of 255 (28 - 1) characters. Each TINYTEXT value is stored using a one-byte length prefix that indicates the number of bytes in the value.'), + 'TINYTEXT' => __('A TEXT column with a maximum length of 255 (2^8 - 1) characters. Each TINYTEXT value is stored using a one-byte length prefix that indicates the number of bytes in the value.'), 'TEXT' => __('A TEXT column with a maximum length of 65,535 (2^16 - 1) characters. Each TEXT value is stored using a two-byte length prefix that indicates the number of bytes in the value.'), - 'MEDIUMTEXT' => __('A TEXT column with a maximum length of 16,777,215 (224 - 1) characters. Each MEDIUMTEXT value is stored using a three-byte length prefix that indicates the number of bytes in the value.'), - 'LONGTEXT' => __('A TEXT column with a maximum length of 4,294,967,295 or 4GB (232 - 1) characters. Each LONGTEXT value is stored using a four-byte length prefix that indicates the number of bytes in the value.'), + 'MEDIUMTEXT' => __('A TEXT column with a maximum length of 16,777,215 (2^24 - 1) characters. Each MEDIUMTEXT value is stored using a three-byte length prefix that indicates the number of bytes in the value.'), + 'LONGTEXT' => __('A TEXT column with a maximum length of 4,294,967,295 or 4GB (2^32 - 1) characters. Each LONGTEXT value is stored using a four-byte length prefix that indicates the number of bytes in the value.'), 'BINARY' => __('The BINARY type is similar to the CHAR type, but stores binary byte strings rather than non-binary character strings. M represents the column length in bytes.'), 'VARBINARY' => __('The VARBINARY type is similar to the VARCHAR type, but stores binary byte strings rather than non-binary character strings. M represents the maximum column length in bytes.'), - 'TINYBLOB' => __('A BLOB column with a maximum length of 255 (28 - 1) bytes. Each TINYBLOB value is stored using a one-byte length prefix that indicates the number of bytes in the value.'), - 'MEDIUMBLOB' => __('A BLOB column with a maximum length of 16,777,215 (224 - 1) bytes. Each MEDIUMBLOB value is stored using a three-byte length prefix that indicates the number of bytes in the value.'), + 'TINYBLOB' => __('A BLOB column with a maximum length of 255 (2^8 - 1) bytes. Each TINYBLOB value is stored using a one-byte length prefix that indicates the number of bytes in the value.'), + 'MEDIUMBLOB' => __('A BLOB column with a maximum length of 16,777,215 (2^24 - 1) bytes. Each MEDIUMBLOB value is stored using a three-byte length prefix that indicates the number of bytes in the value.'), 'BLOB' => __('A BLOB column with a maximum length of 65,535 (2^16 - 1) bytes. Each BLOB value is stored using a two-byte length prefix that indicates the number of bytes in the value.'), - 'LONGBLOB' => __('A BLOB column with a maximum length of 4,294,967,295 or 4GB (232 - 1) bytes. Each LONGBLOB value is stored using a four-byte length prefix that indicates the number of bytes in the value.'), + 'LONGBLOB' => __('A BLOB column with a maximum length of 4,294,967,295 or 4GB (2^32 - 1) bytes. Each LONGBLOB value is stored using a four-byte length prefix that indicates the number of bytes in the value.'), 'ENUM' => __("An enumeration. A string object that can have only one value, chosen from the list of values 'value1', 'value2', ..., NULL or the special '' error value. An ENUM column can have a maximum of 65,535 distinct values."), 'SET' => __("A set. A string object that can have zero or more values, each of which must be chosen from the list of values 'value1', 'value2', ... A SET column can have a maximum of 64 members."), 'GEOMETRY' => '', From ede098ea360452beae7e4c04e3ba441fc52e1288 Mon Sep 17 00:00:00 2001 From: Willian Gustavo Veiga Date: Wed, 25 Apr 2012 08:39:42 -0300 Subject: [PATCH 4/4] BIGINT description - missing commas added. --- libraries/data_mysql.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/data_mysql.inc.php b/libraries/data_mysql.inc.php index 804dfcbb7b..bb7c6a7a03 100644 --- a/libraries/data_mysql.inc.php +++ b/libraries/data_mysql.inc.php @@ -300,7 +300,7 @@ function PMA_supportedDataTypesDescriptions() 'SMALLINT' => __('A small integer. The signed range is -32,768 to 32,767. The unsigned range is 0 to 65,535.'), 'MEDIUMINT' => __('A medium-sized integer. The signed range is -8,388,608 to 8,388,607. The unsigned range is 0 to 16,777,215.'), 'INT' => __('A normal-size integer. The signed range is -2,147,483,648 to 2,147,483,647. The unsigned range is 0 to 4,294,967,295.'), - 'BIGINT' => __('A large integer. The signed range is -9223372036854775808 to 9223372036854775807. The unsigned range is 0 to 18,446,744,073,709,551,615.'), + 'BIGINT' => __('A large integer. The signed range is -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807. The unsigned range is 0 to 18,446,744,073,709,551,615.'), 'DECIMAL' => __('A packed "exact" fixed-point number. The maximum number of digits (M) for DECIMAL is 65. The maximum number of supported decimals (D) is 30. If D is omitted, the default is 0. If M is omitted, the default is 10.'), 'FLOAT' => __('A small (single-precision) floating-point number. Allowable values are -3.402823466E+38 to -1.175494351E-38, 0, and 1.175494351E-38 to 3.402823466E+38.'), 'DOUBLE' => __('A normal-size (double-precision) floating-point number. Allowable values are -1.7976931348623157E+308 to -2.2250738585072014E-308, 0, and 2.2250738585072014E-308 to 1.7976931348623157E+308.'),