search.php: ported temptable code to lib2; added some missing drop-tables and sql-free-results; updates #238

This commit is contained in:
following
2013-07-19 03:14:18 +02:00
parent ba70cc034f
commit 9494e067a8
10 changed files with 159 additions and 108 deletions
+30 -1
View File
@@ -247,7 +247,8 @@
$arg = '';
// find next non-alphanumeric char
while (preg_match('/^[a-zA-Z0-9]{1}/', $nextchar) == 1)
// (added '_' - it is used in temptable names - following 2013/07/18)
while (preg_match('/^[a-zA-Z0-9_]{1}/', $nextchar) == 1)
{
$arg .= $nextchar;
@@ -671,6 +672,19 @@
unset($db['temptables'][$table]);
}
function sql_rename_temp_table($table, $newname)
{
global $db, $opt;
if ($opt['db']['pconnect'] == true)
sqlf("UPDATE &db.`sys_temptables` SET `name`='&3' WHERE `threadid`='&1' AND `name`='&2'", mysql_thread_id($db['dblink']), $table, $newname);
sqlf('ALTER TABLE &tmpdb.`&1` RENAME &tmpdb.`&2`', $table, $newname);
unset($db['temptables'][$table]);
$db['temptables'][$newname] = $newname;
}
function sql_drop_temp_table_slave($table)
{
global $db, $opt;
@@ -684,6 +698,21 @@
unset($db['temptables_slave'][$table]);
}
function sql_rename_temp_table_slave($table, $newname)
{
global $db, $opt;
if ($opt['db']['pconnect'] == true)
sqlf("UPDATE &db.`sys_temptables` SET `name`='&3' WHERE `threadid`='&1' AND `name`='&2'", mysql_thread_id($db['dblink']), $table, $newname);
sqlf_slave('ALTER TABLE &tmpdb.`&1` RENAME &tmpdb.`&2`', $table, $newname);
unset($db['temptables'][$table]);
unset($db['temptables_slave'][$table]);
$db['temptables'][$newname] = $newname;
$db['temptables_slave'][$newname] = $newname;
}
//database handling
function sql_connect($username=null, $password=null, $raiseError=true)
{
+7 -7
View File
@@ -165,7 +165,7 @@ function search_output()
$childwphandler = new ChildWp_Handler();
$children='';
$rs = sql('SELECT `searchtmp`.`cache_id` `cacheid` FROM `searchtmp`');
$rs = sql('SELECT &searchtmp.`cache_id` `cacheid` FROM &searchtmp');
while ($r = sql_fetch_array($rs) && $children == '')
{
if (count($childwphandler->getChildWps($r['cacheid'])))
@@ -179,19 +179,19 @@ function search_output()
$user_id = $login->userid;
$rs = sql_slave("SELECT SQL_BUFFER_RESULT `searchtmp`.`cache_id` `cacheid`, `searchtmp`.`longitude` `longitude`, `searchtmp`.`latitude` `latitude`,
$rs = sql_slave("SELECT SQL_BUFFER_RESULT &searchtmp.`cache_id` `cacheid`, &searchtmp.`longitude` `longitude`, &searchtmp.`latitude` `latitude`,
`cache_location`.`adm2` `state`, `caches`.`wp_oc` `waypoint`, `caches`.`date_hidden` `date_hidden`, `caches`.`name` `name`,
`caches`.`country` `country`, `countries`.`name` AS `country_name`, `caches`.`terrain` `terrain`, `caches`.`difficulty` `difficulty`, `caches`.`desc_languages` `desc_languages`,
`caches`.`size` `size`, `caches`.`type` `type`, `caches`.`status` `status`, `user`.`username` `username`, `caches`.`user_id` `userid`, `user`.`data_license`,
`cache_desc`.`desc` `desc`, `cache_desc`.`short_desc` `short_desc`, `cache_desc`.`hint` `hint`,
IFNULL(`stat_cache_logs`.`found`, 0) AS `found`
FROM `searchtmp`
INNER JOIN `caches` ON `searchtmp`.`cache_id`=`caches`.`cache_id`
FROM &searchtmp
INNER JOIN `caches` ON &searchtmp.`cache_id`=`caches`.`cache_id`
INNER JOIN `countries` ON `caches`.`country`=`countries`.`short`
INNER JOIN `user` ON `searchtmp`.`user_id`=`user`.`user_id`
INNER JOIN `user` ON &searchtmp.`user_id`=`user`.`user_id`
INNER JOIN `cache_desc` ON `caches`.`cache_id`=`cache_desc`.`cache_id`AND `caches`.`default_desclang`=`cache_desc`.`language`
LEFT JOIN `cache_location` ON `searchtmp`.`cache_id`=`cache_location`.`cache_id`
LEFT JOIN `stat_cache_logs` ON `searchtmp`.`cache_id`=`stat_cache_logs`.`cache_id` AND `stat_cache_logs`.`user_id`='&1'", $user_id);
LEFT JOIN `cache_location` ON &searchtmp.`cache_id`=`cache_location`.`cache_id`
LEFT JOIN `stat_cache_logs` ON &searchtmp.`cache_id`=`stat_cache_logs`.`cache_id` AND `stat_cache_logs`.`user_id`='&1'", $user_id);
while ($r = sql_fetch_array($rs))
{
+10 -10
View File
@@ -50,7 +50,7 @@ function search_output()
MIN(`latitude`) `minlat`,
MAX(`latitude`) `maxlat`
FROM
`searchtmp`');
&searchtmp');
$rMinMax = sql_fetch_array($rsMinMax);
mysql_free_result($rsMinMax);
@@ -75,10 +75,10 @@ function search_output()
$rs = sql_slave('
SELECT SQL_BUFFER_RESULT
`searchtmp`.`cache_id` `cacheid`,
`searchtmp`.`longitude`,
`searchtmp`.`latitude`,
`searchtmp`.`type`,
&searchtmp.`cache_id` `cacheid`,
&searchtmp.`longitude`,
&searchtmp.`latitude`,
&searchtmp.`type`,
`caches`.`date_hidden`,
`caches`.`name`,
`caches`.`status`,
@@ -88,16 +88,16 @@ function search_output()
`caches`.`difficulty`,
`user`.`username`
FROM
`searchtmp`,
&searchtmp,
`caches`,
`cache_type`,
`cache_size`,
`user`
WHERE
`searchtmp`.`cache_id`=`caches`.`cache_id` AND
`searchtmp`.`type`=`cache_type`.`id` AND
`searchtmp`.`size`=`cache_size`.`id` AND
`searchtmp`.`user_id`=`user`.`user_id`');
&searchtmp.`cache_id`=`caches`.`cache_id` AND
&searchtmp.`type`=`cache_type`.`id` AND
&searchtmp.`size`=`cache_size`.`id` AND
&searchtmp.`user_id`=`user`.`user_id`');
while ($r = sql_fetch_array($rs))
{
+6 -6
View File
@@ -47,20 +47,20 @@ function search_output()
$rs = sql_slave('
SELECT SQL_BUFFER_RESULT
`searchtmp`.`cache_id` `cacheid`,
`searchtmp`.`longitude`,
`searchtmp`.`latitude`,
&searchtmp.`cache_id` `cacheid`,
&searchtmp.`longitude`,
&searchtmp.`latitude`,
`caches`.`name`,
`caches`.`status`,
`caches`.`wp_oc` `waypoint`,
`user`.`username` `username`
FROM
`searchtmp`,
&searchtmp,
`caches`,
`user`
WHERE
`searchtmp`.`cache_id`=`caches`.`cache_id` AND
`searchtmp`.`user_id`=`user`.`user_id`');
&searchtmp.`cache_id`=`caches`.`cache_id` AND
&searchtmp.`user_id`=`user`.`user_id`');
while ($r = sql_fetch_array($rs))
{
+6 -4
View File
@@ -20,15 +20,17 @@
else
{
// ensure that query is performed without errors before reserving the result_id
sql_slave("CREATE TEMPORARY TABLE `tmpmapresult` (`cache_id` INT UNSIGNED NOT NULL, PRIMARY KEY (`cache_id`)) ENGINE=MEMORY");
sql_slave("INSERT INTO `tmpmapresult` (`cache_id`) " . $sqlFilter);
sql_temp_table_slave('tmpmapresult');
sql_slave("CREATE TEMPORARY TABLE &tmpmapresult (`cache_id` INT UNSIGNED NOT NULL, PRIMARY KEY (`cache_id`)) ENGINE=MEMORY");
sql_slave("INSERT INTO &tmpmapresult (`cache_id`) " . $sqlFilter);
sql("INSERT INTO `map2_result` (`slave_id`, `sqlchecksum`, `sqlquery`, `date_created`, `date_lastqueried`) VALUES ('&1', '&2', '&3', NOW(), NOW())", $db['slave_id'], $sqlchecksum, $cachesFilter."\n".$sqlFilter);
$resultId = sql_insert_id();
sql_slave("INSERT IGNORE INTO `map2_data` (`result_id`, `cache_id`) SELECT '&1', `cache_id` FROM `tmpmapresult`", $resultId);
sql_slave("DROP TEMPORARY TABLE `tmpmapresult`");
sql_slave("INSERT IGNORE INTO `map2_data` (`result_id`, `cache_id`) SELECT '&1', `cache_id` FROM &tmpmapresult", $resultId);
sql_drop_temp_table_slave('tmpmapresult');
}
sql_free_result($rsMapCache);
if ($map2_bounds)
{
+8 -8
View File
@@ -32,9 +32,9 @@ function search_output()
$sql = '
SELECT
`searchtmp`.`cache_id` `cacheid`,
`searchtmp`.`longitude`,
`searchtmp`.`latitude`,
&searchtmp.`cache_id` `cacheid`,
&searchtmp.`longitude`,
&searchtmp.`latitude`,
`caches`.`name`,
`caches`.`wp_oc`,
`caches`.`terrain`,
@@ -43,16 +43,16 @@ function search_output()
`cache_size`.`de` `sizedesc`,
`user`.`username`
FROM
`searchtmp`,
&searchtmp,
`caches`,
`cache_type`,
`cache_size`,
`user`
WHERE
`searchtmp`.`cache_id`=`caches`.`cache_id` AND
`searchtmp`.`type`=`cache_type`.`id` AND
`searchtmp`.`size`=`cache_size`.`id` AND
`searchtmp`.`user_id`=`user`.`user_id`';
&searchtmp.`cache_id`=`caches`.`cache_id` AND
&searchtmp.`type`=`cache_type`.`id` AND
&searchtmp.`size`=`cache_size`.`id` AND
&searchtmp.`user_id`=`user`.`user_id`';
$rs = sql_slave($sql, $sqldebug);
+5 -5
View File
@@ -32,15 +32,15 @@ function search_output()
$nr = 1;
$rs = sql_slave('
SELECT SQL_BUFFER_RESULT
`searchtmp`.`cache_id` `cacheid`,
`searchtmp`.`longitude`,
`searchtmp`.`latitude`,
&searchtmp.`cache_id` `cacheid`,
&searchtmp.`longitude`,
&searchtmp.`latitude`,
`caches`.`name`
FROM
`searchtmp`,
&searchtmp,
`caches`
WHERE
`searchtmp`.`cache_id`=`caches`.`cache_id`');
&searchtmp.`cache_id`=`caches`.`cache_id`');
while ($r = sql_fetch_array($rs))
{
+5 -5
View File
@@ -57,9 +57,9 @@ Logeinträge:
$rs = sql_slave('
SELECT SQL_BUFFER_RESULT
`searchtmp`.`cache_id` `cacheid`,
`searchtmp`.`longitude` `longitude`,
`searchtmp`.`latitude` `latitude`,
&searchtmp.`cache_id` `cacheid`,
&searchtmp.`longitude` `longitude`,
&searchtmp.`latitude` `latitude`,
`caches`.`wp_oc` `waypoint`,
`caches`.`date_hidden` `date_hidden`,
`caches`.`name` `name`,
@@ -79,8 +79,8 @@ Logeinträge:
`user`.`username`,
`user`.`data_license`
FROM
`searchtmp`
INNER JOIN `caches` ON `searchtmp`.`cache_id`=`caches`.`cache_id`
&searchtmp
INNER JOIN `caches` ON &searchtmp.`cache_id`=`caches`.`cache_id`
INNER JOIN `cache_desc` ON `cache_desc`.`cache_id`=`caches`.`cache_id`
AND `caches`.`default_desclang`=`cache_desc`.`language`
INNER JOIN `cache_type` ON `cache_type`.`id`=`caches`.`type`
+11 -10
View File
@@ -46,12 +46,13 @@ function search_output()
";
// create temporary table
sql_slave('CREATE TEMPORARY TABLE `searchtmp`
sql_temp_table_slave('searchtmp');
sql_slave('CREATE TEMPORARY TABLE &searchtmp
SELECT SQL_BUFFER_RESULT SQL_CALC_FOUND_ROWS ' . $sql . $sqlLimit);
$resultcount = sql_value_slave('SELECT FOUND_ROWS()', 0);
$rsCount = sql_slave('SELECT COUNT(*) `count` FROM `searchtmp`');
$rsCount = sql_slave('SELECT COUNT(*) `count` FROM &searchtmp');
$rCount = sql_fetch_array($rsCount);
mysql_free_result($rsCount);
@@ -72,9 +73,9 @@ function search_output()
echo " </docinfo>\n";
}
$rs = sql_slave("SELECT `searchtmp`.`cache_id` `cacheid`,
`searchtmp`.`longitude` `longitude`,
`searchtmp`.`latitude` `latitude`,
$rs = sql_slave("SELECT &searchtmp.`cache_id` `cacheid`,
&searchtmp.`longitude` `longitude`,
&searchtmp.`latitude` `latitude`,
`caches`.`wp_oc` `waypoint`,
`caches`.`date_hidden` `date_hidden`,
`caches`.`name` `name`,
@@ -94,11 +95,11 @@ function search_output()
`cache_desc`.`short_desc` `short_desc`,
`cache_desc`.`hint` `hint`,
`cache_desc`.`desc_html` `html`,
`searchtmp`.`distance` `distance`,
&searchtmp.`distance` `distance`,
`sys_trans_text`.`text` `country`
FROM `searchtmp`
INNER JOIN `caches` ON `searchtmp`.`cache_id`=`caches`.`cache_id`
INNER JOIN `user` ON `searchtmp`.`user_id`=`user`.`user_id`
FROM &searchtmp
INNER JOIN `caches` ON &searchtmp.`cache_id`=`caches`.`cache_id`
INNER JOIN `user` ON &searchtmp.`user_id`=`user`.`user_id`
INNER JOIN `cache_desc` ON `caches`.`cache_id`=`cache_desc`.`cache_id` AND `caches`.`default_desclang`=`cache_desc`.`language`
INNER JOIN `cache_type` ON `caches`.`type`=`cache_type`.`id`
INNER JOIN `cache_status` ON `caches`.`status`=`cache_status`.`id`
@@ -169,7 +170,7 @@ function search_output()
echo $thisline;
}
mysql_free_result($rs);
sql_slave('DROP TABLE `searchtmp`');
sql_drop_temp_table_slave('searchtmp');
if (!$db['debug'])
echo "</result>\n";