The branch, master has been updated via 77b6fb172d3099c54335e05e12859b5d8ca42950 (commit) via 194e357a996310225364d311e6c27ed41db002bb (commit) from 7f598f4f4f562b392fe4a83d3e9fd9bf00379e37 (commit)
- Log ----------------------------------------------------------------- commit 77b6fb172d3099c54335e05e12859b5d8ca42950 Merge: 7f598f4f4f562b392fe4a83d3e9fd9bf00379e37 194e357a996310225364d311e6c27ed41db002bb Author: Dieter Adriaenssens ruleant@users.sourceforge.net Date: Fri Sep 10 17:34:52 2010 +0200
Merge branch 'QA_3_3'
Conflicts:
ChangeLog
-----------------------------------------------------------------------
Summary of changes: ChangeLog | 3 ++ libraries/import.lib.php | 68 +++++++++++++++++++++++++++------------------- 2 files changed, 43 insertions(+), 28 deletions(-)
diff --git a/ChangeLog b/ChangeLog index ad54bee..d15366e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -113,6 +113,9 @@ - bug #3056610 [interface] Removed modification options for information_schema + patch #3055886 [config] Add Left frame table filter visibility config option, thanks to eesau
+3.3.8.0 (not yet released) +- bug #3059311 [import] BIGINT field type added to table analysis + 3.3.7.0 (2010-09-07) - patch #3050492 [PDF scratchboard] Cannot drag table box to the edge after a page size increase, thanks to Martin Schönberger - mad05 diff --git a/libraries/import.lib.php b/libraries/import.lib.php index 8ef38f6..bacc6a4 100644 --- a/libraries/import.lib.php +++ b/libraries/import.lib.php @@ -408,6 +408,7 @@ define("NONE", 0); define("VARCHAR", 1); define("INT", 2); define("DECIMAL", 3); +define("BIGINT", 4);
/* Decimal size defs */ define("M", 0); @@ -489,6 +490,7 @@ function PMA_getDecimalSize(&$cell) { * @uses FULL * @uses VARCHAR * @uses DECIMAL + * @uses BIGINT * @uses INT * @uses NONE * @uses strcmp() @@ -497,8 +499,8 @@ function PMA_getDecimalSize(&$cell) { * @uses PMA_getD() * @uses PMA_getDecimalSize() * @param string $last_cumulative_size Last cumulative column size - * @param int $last_cumulative_type Last cumulative column type (NONE or VARCHAR or DECIMAL or INT) - * @param int $curr_type Type of the current cell (NONE or VARCHAR or DECIMAL or INT) + * @param int $last_cumulative_type Last cumulative column type (NONE or VARCHAR or DECIMAL or INT or BIGINT) + * @param int $curr_type Type of the current cell (NONE or VARCHAR or DECIMAL or INT or BIGINT) * @param string &$cell The current cell * @return string Size of the given cell in the type-appropriate format */ @@ -516,7 +518,7 @@ function PMA_detectSize($last_cumulative_size, $last_cumulative_type, $curr_type */ elseif ($curr_type == VARCHAR) { /** - * The last cumlative type was VARCHAR + * The last cumulative type was VARCHAR */ if ($last_cumulative_type == VARCHAR) { if ($curr_size >= $last_cumulative_size) { @@ -526,7 +528,7 @@ function PMA_detectSize($last_cumulative_size, $last_cumulative_type, $curr_type } } /** - * The last cumlative type was DECIMAL + * The last cumulative type was DECIMAL */ elseif ($last_cumulative_type == DECIMAL) { $oldM = PMA_getM($last_cumulative_size); @@ -538,9 +540,9 @@ function PMA_detectSize($last_cumulative_size, $last_cumulative_type, $curr_type } } /** - * The last cumlative type was INT + * The last cumulative type was BIGINT or INT */ - elseif ($last_cumulative_type == INT) { + elseif ($last_cumulative_type == BIGINT || $last_cumulative_type == INT) { if ($curr_size >= $last_cumulative_size) { return $curr_size; } else { @@ -569,7 +571,7 @@ function PMA_detectSize($last_cumulative_size, $last_cumulative_type, $curr_type */ elseif ($curr_type == DECIMAL) { /** - * The last cumlative type was VARCHAR + * The last cumulative type was VARCHAR */ if ($last_cumulative_type == VARCHAR) { /* Convert $last_cumulative_size from varchar to decimal format */ @@ -582,7 +584,7 @@ function PMA_detectSize($last_cumulative_size, $last_cumulative_type, $curr_type } } /** - * The last cumlative type was DECIMAL + * The last cumulative type was DECIMAL */ elseif ($last_cumulative_type == DECIMAL) { $size = PMA_getDecimalSize($cell); @@ -599,9 +601,9 @@ function PMA_detectSize($last_cumulative_size, $last_cumulative_type, $curr_type } } /** - * The last cumlative type was INT + * The last cumulative type was BIGINT or INT */ - elseif ($last_cumulative_type == INT) { + elseif ($last_cumulative_type == BIGINT || $last_cumulative_type == INT) { /* Convert $last_cumulative_size from int to decimal format */ $size = PMA_getDecimalSize($cell); @@ -632,11 +634,11 @@ function PMA_detectSize($last_cumulative_size, $last_cumulative_type, $curr_type } } /** - * What to do if the current cell is of type INT + * What to do if the current cell is of type BIGINT or INT */ - elseif ($curr_type == INT) { + elseif ($curr_type == BIGINT || $curr_type == INT) { /** - * The last cumlative type was VARCHAR + * The last cumulative type was VARCHAR */ if ($last_cumulative_type == VARCHAR) { if ($curr_size >= $last_cumulative_size) { @@ -646,7 +648,7 @@ function PMA_detectSize($last_cumulative_size, $last_cumulative_type, $curr_type } } /** - * The last cumlative type was DECIMAL + * The last cumulative type was DECIMAL */ elseif ($last_cumulative_type == DECIMAL) { $oldM = PMA_getM($last_cumulative_size); @@ -664,9 +666,9 @@ function PMA_detectSize($last_cumulative_size, $last_cumulative_type, $curr_type } } /** - * The last cumlative type was INT + * The last cumulative type was BIGINT or INT */ - elseif ($last_cumulative_type == INT) { + elseif ($last_cumulative_type == BIGINT || $last_cumulative_type == INT) { if ($curr_size >= $last_cumulative_size) { return $curr_size; } else { @@ -709,6 +711,7 @@ function PMA_detectSize($last_cumulative_size, $last_cumulative_type, $curr_type * @access public * * @uses DECIMAL + * @uses BIGINT * @uses INT * @uses VARCHAR * @uses NONE @@ -716,13 +719,13 @@ function PMA_detectSize($last_cumulative_size, $last_cumulative_type, $curr_type * @uses strcmp() * @uses strpos() * @uses substr_count() - * @param int $last_cumulative_type Last cumulative column type (VARCHAR or INT or DECIMAL or NONE) + * @param int $last_cumulative_type Last cumulative column type (VARCHAR or INT or BIGINT or DECIMAL or NONE) * @param string &$cell String representation of the cell for which a best-fit type is to be determined - * @return int The MySQL type representation (VARCHAR or INT or DECIMAL or NONE) + * @return int The MySQL type representation (VARCHAR or INT or BIGINT or DECIMAL or NONE) */ function PMA_detectType($last_cumulative_type, &$cell) { /** - * If numeric, determine if decimal or int + * If numeric, determine if decimal, int or bigint * Else, we call it varchar for simplicity */
@@ -736,7 +739,11 @@ function PMA_detectType($last_cumulative_type, &$cell) { if ($cell == (string)(float)$cell && strpos($cell, ".") !== false && substr_count($cell, ".") == 1) { return DECIMAL; } else { - return INT; + if ($cell > 2147483647) { + return BIGINT; + } else { + return INT; + } } } else { return VARCHAR; @@ -758,6 +765,7 @@ function PMA_detectType($last_cumulative_type, &$cell) { * @uses ROWS * @uses VARCHAR * @uses DECIMAL + * @uses BIGINT * @uses INT * @uses NONE * @uses count() @@ -802,21 +810,25 @@ function PMA_analyzeTable(&$table) { $sizes[$i] = PMA_detectSize($sizes[$i], $types[$i], $curr_type, $table[ROWS][$j][$i]); /** - * If a type for this column has alreday been delcared, + * If a type for this column has already been declared, * only alter it if it was a number and a varchar was found - */ - if ($curr_type != NONE) { + */ + if ($curr_type != NONE) { if ($curr_type == VARCHAR) { $types[$i] = VARCHAR; } else if ($curr_type == DECIMAL) { if ($types[$i] != VARCHAR) { $types[$i] = DECIMAL; } + } else if ($curr_type == BIGINT) { + if ($types[$i] != VARCHAR && $types[$i] != DECIMAL) { + $types[$i] = BIGINT; + } } else if ($curr_type == INT) { - if ($types[$i] != VARCHAR && $types[$i] != DECIMAL) { - $types[$i] = INT; - } - } + if ($types[$i] != VARCHAR && $types[$i] != DECIMAL && $types[$i] != BIGINT) { + $types[$i] = INT; + } + } } } } @@ -945,7 +957,7 @@ function PMA_buildSQL($db_name, &$tables, &$analyses = NULL, &$additional_sql = }
if ($analyses != NULL) { - $type_array = array(NONE => "NULL", VARCHAR => "varchar", INT => "int", DECIMAL => "decimal"); + $type_array = array(NONE => "NULL", VARCHAR => "varchar", INT => "int", DECIMAL => "decimal", BIGINT => "bigint");
/* TODO: Do more checking here to make sure they really are matched */ if (count($tables) != count($analyses)) {
hooks/post-receive