search.php: ported temptable code to lib2; added some missing drop-tables and sql-free-results; updates #238
This commit is contained in:
+30
-1
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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))
|
||||
{
|
||||
|
||||
@@ -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))
|
||||
{
|
||||
|
||||
@@ -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))
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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))
|
||||
{
|
||||
|
||||
@@ -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`
|
||||
|
||||
@@ -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";
|
||||
|
||||
Reference in New Issue
Block a user