patch #1253478, variable initialization and code cleanup
This commit is contained in:
@@ -15,6 +15,8 @@ $Source$
|
|||||||
* libraries/mysql_charsets.lib.php, /relation_cleanup.lib.php,
|
* libraries/mysql_charsets.lib.php, /relation_cleanup.lib.php,
|
||||||
/tbl_move_copy.php: patch #1253461 (code cleanup),
|
/tbl_move_copy.php: patch #1253461 (code cleanup),
|
||||||
thanks to Sebastian Mendel
|
thanks to Sebastian Mendel
|
||||||
|
* libraries/sqlparser.lib.php: patch #1253478, variable initialization
|
||||||
|
and code cleanup, thanks to Sebastian Mendel
|
||||||
|
|
||||||
2005-08-07 Marc Delisle <lem9@users.sourceforge.net>
|
2005-08-07 Marc Delisle <lem9@users.sourceforge.net>
|
||||||
* Documentation.html: Save button for PDF schema coordinates,
|
* Documentation.html: Save button for PDF schema coordinates,
|
||||||
|
@@ -715,6 +715,8 @@ if ($is_minimum_common == FALSE) {
|
|||||||
$subresult_empty = $subresult;
|
$subresult_empty = $subresult;
|
||||||
$seek_queryend = FALSE;
|
$seek_queryend = FALSE;
|
||||||
$seen_end_of_table_ref = FALSE;
|
$seen_end_of_table_ref = FALSE;
|
||||||
|
$number_of_brackets_in_extract = 0;
|
||||||
|
$number_of_brackets_in_group_concat = 0;
|
||||||
|
|
||||||
// for SELECT EXTRACT(YEAR_MONTH FROM CURDATE())
|
// for SELECT EXTRACT(YEAR_MONTH FROM CURDATE())
|
||||||
// we must not use CURDATE as a table_ref
|
// we must not use CURDATE as a table_ref
|
||||||
@@ -1299,6 +1301,8 @@ if ($is_minimum_common == FALSE) {
|
|||||||
$in_from = FALSE;
|
$in_from = FALSE;
|
||||||
$in_group_concat = FALSE;
|
$in_group_concat = FALSE;
|
||||||
$unsorted_query = '';
|
$unsorted_query = '';
|
||||||
|
$first_reserved_word = '';
|
||||||
|
$current_identifier = '';
|
||||||
|
|
||||||
for ($i = 0; $i < $size; $i++) {
|
for ($i = 0; $i < $size; $i++) {
|
||||||
//DEBUG echo "trace loop2 <b>" . $arr[$i]['data'] . "</b> (" . $arr[$i]['type'] . ")<br />";
|
//DEBUG echo "trace loop2 <b>" . $arr[$i]['data'] . "</b> (" . $arr[$i]['type'] . ")<br />";
|
||||||
@@ -1604,61 +1608,61 @@ if ($is_minimum_common == FALSE) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Cases covered:
|
// Cases covered:
|
||||||
|
|
||||||
// [ON DELETE {CASCADE | SET NULL | NO ACTION | RESTRICT}]
|
// [ON DELETE {CASCADE | SET NULL | NO ACTION | RESTRICT}]
|
||||||
// [ON UPDATE {CASCADE | SET NULL | NO ACTION | RESTRICT}]
|
// [ON UPDATE {CASCADE | SET NULL | NO ACTION | RESTRICT}]
|
||||||
|
|
||||||
// but we set ['on_delete'] or ['on_cascade'] to
|
// but we set ['on_delete'] or ['on_cascade'] to
|
||||||
// CASCADE | SET_NULL | NO_ACTION | RESTRICT
|
// CASCADE | SET_NULL | NO_ACTION | RESTRICT
|
||||||
|
|
||||||
// ON UPDATE CURRENT_TIMESTAMP
|
// ON UPDATE CURRENT_TIMESTAMP
|
||||||
|
|
||||||
if ($upper_data == 'ON') {
|
if ($upper_data == 'ON') {
|
||||||
unset($clause);
|
if ($arr[$i+1]['type'] == 'alpha_reservedWord') {
|
||||||
if ($arr[$i+1]['type'] == 'alpha_reservedWord') {
|
$second_upper_data = strtoupper($arr[$i+1]['data']);
|
||||||
$second_upper_data = strtoupper($arr[$i+1]['data']);
|
if ($second_upper_data == 'DELETE') {
|
||||||
if ($second_upper_data == 'DELETE') {
|
|
||||||
$clause = 'on_delete';
|
$clause = 'on_delete';
|
||||||
}
|
}
|
||||||
if ($second_upper_data == 'UPDATE') {
|
if ($second_upper_data == 'UPDATE') {
|
||||||
$clause = 'on_update';
|
$clause = 'on_update';
|
||||||
}
|
}
|
||||||
if (isset($clause)
|
if (isset($clause)
|
||||||
&& ($arr[$i+2]['type'] == 'alpha_reservedWord'
|
&& ($arr[$i+2]['type'] == 'alpha_reservedWord'
|
||||||
|
|
||||||
// ugly workaround because currently, NO is not
|
// ugly workaround because currently, NO is not
|
||||||
// in the list of reserved words in sqlparser.data
|
// in the list of reserved words in sqlparser.data
|
||||||
// (we got a bug report about not being able to use
|
// (we got a bug report about not being able to use
|
||||||
// 'no' as an identifier)
|
// 'no' as an identifier)
|
||||||
|| ($arr[$i+2]['type'] == 'alpha_identifier'
|
|| ($arr[$i+2]['type'] == 'alpha_identifier'
|
||||||
&& strtoupper($arr[$i+2]['data'])=='NO') )
|
&& strtoupper($arr[$i+2]['data'])=='NO') )
|
||||||
) {
|
) {
|
||||||
$third_upper_data = strtoupper($arr[$i+2]['data']);
|
$third_upper_data = strtoupper($arr[$i+2]['data']);
|
||||||
if ($third_upper_data == 'CASCADE'
|
if ($third_upper_data == 'CASCADE'
|
||||||
|| $third_upper_data == 'RESTRICT') {
|
|| $third_upper_data == 'RESTRICT') {
|
||||||
$value = $third_upper_data;
|
$value = $third_upper_data;
|
||||||
} elseif ($third_upper_data == 'SET'
|
} elseif ($third_upper_data == 'SET'
|
||||||
|| $third_upper_data == 'NO') {
|
|| $third_upper_data == 'NO') {
|
||||||
if ($arr[$i+3]['type'] == 'alpha_reservedWord') {
|
if ($arr[$i+3]['type'] == 'alpha_reservedWord') {
|
||||||
$value = $third_upper_data . '_' . strtoupper($arr[$i+3]['data']);
|
$value = $third_upper_data . '_' . strtoupper($arr[$i+3]['data']);
|
||||||
}
|
}
|
||||||
} elseif ($third_upper_data == 'CURRENT_TIMESTAMP') {
|
} elseif ($third_upper_data == 'CURRENT_TIMESTAMP') {
|
||||||
if ($clause == 'on_update'
|
if ($clause == 'on_update'
|
||||||
&& $in_timestamp_options) {
|
&& $in_timestamp_options) {
|
||||||
$create_table_fields[$current_identifier]['on_update_current_timestamp'] = TRUE;
|
$create_table_fields[$current_identifier]['on_update_current_timestamp'] = TRUE;
|
||||||
$seen_default = FALSE;
|
$seen_default = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
$value = '';
|
$value = '';
|
||||||
}
|
}
|
||||||
if (!empty($value)) {
|
if (!empty($value)) {
|
||||||
$foreign[$foreign_key_number][$clause] = $value;
|
$foreign[$foreign_key_number][$clause] = $value;
|
||||||
}
|
}
|
||||||
}
|
unset($clause);
|
||||||
}
|
} // endif (isset($clause))
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} // end of reserved words analysis
|
} // end of reserved words analysis
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user