- remove some unnecessary db columns (#history_summary.id, #history.year, month, day and hour)

git-svn-id: http://piwigo.org/svn/trunk@2333 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
rvelices
2008-05-06 01:04:58 +00:00
parent b623814d9b
commit 5dbad41e2e
5 changed files with 151 additions and 100 deletions
+32 -17
View File
@@ -277,7 +277,7 @@ function update_category($ids = 'all')
}
$where_cats = '%s IN('.wordwrap(implode(', ', $ids), 120, "\n").')';
}
// find all categories where the setted representative is not possible :
// the picture does not exist
$query = '
@@ -394,15 +394,15 @@ function mass_inserts($table_name, $dbfields, $datas)
if ($first)
{
$query = '
INSERT INTO '.$table_name.'
('.implode(',', $dbfields).')
VALUES';
INSERT INTO '.$table_name.'
('.implode(',', $dbfields).')
VALUES';
$first = false;
}
else
{
$query .= '
, ';
, ';
}
$query .= '(';
@@ -452,8 +452,8 @@ function mass_updates($tablename, $dbfields, $datas)
foreach ($datas as $data)
{
$query = '
UPDATE '.$tablename.'
SET ';
UPDATE '.$tablename.'
SET ';
$is_first = true;
foreach ($dbfields['update'] as $key)
{
@@ -473,7 +473,7 @@ function mass_updates($tablename, $dbfields, $datas)
$is_first = false;
}
$query.= '
WHERE ';
WHERE ';
$is_first = true;
foreach ($dbfields['primary'] as $key)
@@ -482,11 +482,18 @@ function mass_updates($tablename, $dbfields, $datas)
{
$query.= ' AND ';
}
$query.= $key.' = \''.$data[$key].'\'';
if ( isset($data[$key]) )
{
$query.= $key.' = \''.$data[$key].'\'';
}
else
{
$query.= $key.' IS NULL';
}
$is_first = false;
}
$query.= '
;';
;';
pwg_query($query);
}
}
@@ -494,7 +501,7 @@ function mass_updates($tablename, $dbfields, $datas)
{
// creation of the temporary table
$query = '
SHOW FULL COLUMNS FROM '.$tablename.'
SHOW FULL COLUMNS FROM '.$tablename.'
;';
$result = pwg_query($query);
$columns = array();
@@ -505,14 +512,21 @@ function mass_updates($tablename, $dbfields, $datas)
{
$column = $row['Field'];
$column.= ' '.$row['Type'];
if (!isset($row['Null']) or $row['Null'] == '')
$nullable = true;
if (!isset($row['Null']) or $row['Null'] == '' or $row['Null']=='NO')
{
$column.= ' NOT NULL';
$nullable = false;
}
if (isset($row['Default']))
{
$column.= " default '".$row['Default']."'";
}
elseif ($nullable)
{
$column.= " default NULL";
}
if (isset($row['Collation']) and $row['Collation'] != 'NULL')
{
$column.= " collate '".$row['Collation']."'";
@@ -527,15 +541,16 @@ function mass_updates($tablename, $dbfields, $datas)
CREATE TABLE '.$temporary_tablename.'
(
'.implode(",\n", $columns).',
PRIMARY KEY ('.implode(',', $dbfields['primary']).')
UNIQUE KEY the_key ('.implode(',', $dbfields['primary']).')
)
;';
pwg_query($query);
mass_inserts($temporary_tablename, $all_fields, $datas);
// update of images table by joining with temporary table
$query = '
UPDATE '.$tablename.' AS t1, '.$temporary_tablename.' AS t2
SET '.
UPDATE '.$tablename.' AS t1, '.$temporary_tablename.' AS t2
SET '.
implode(
"\n , ",
array_map(
@@ -543,7 +558,7 @@ function mass_updates($tablename, $dbfields, $datas)
$dbfields['update']
)
).'
WHERE '.
WHERE '.
implode(
"\n AND ",
array_map(
@@ -554,7 +569,7 @@ function mass_updates($tablename, $dbfields, $datas)
;';
pwg_query($query);
$query = '
DROP TABLE '.$temporary_tablename.'
DROP TABLE '.$temporary_tablename.'
;';
pwg_query($query);
}
+60 -69
View File
@@ -115,19 +115,15 @@ check_status(ACCESS_ADMINISTRATOR);
$query = '
SELECT
year,
month,
day,
hour,
max(id) AS max_id,
date,
HOUR(time) AS hour,
MAX(id) AS max_id,
COUNT(*) AS nb_pages
FROM '.HISTORY_TABLE.'
WHERE summarized = \'false\'
GROUP BY
year ASC,
month ASC,
day ASC,
hour ASC
date ASC,
HOUR(time) ASC
;';
$result = pwg_query($query);
@@ -140,21 +136,12 @@ $first_time_key = null;
while ($row = mysql_fetch_array($result))
{
$time_keys = array(
substr($row['date'], 0, 4), //yyyy
substr($row['date'], 0, 7), //yyyy-mm
substr($row['date'], 0, 10),//yyyy-mm-dd
sprintf(
'%4u',
$row['year']
),
sprintf(
'%4u.%02u',
$row['year'], $row['month']
),
sprintf(
'%4u.%02u.%02u',
$row['year'], $row['month'], $row['day']
),
sprintf(
'%4u.%02u.%02u.%02u',
$row['year'], $row['month'], $row['day'], $row['hour']
'%s-%02u',
$row['date'], $row['hour']
),
);
@@ -189,69 +176,73 @@ while ($row = mysql_fetch_array($result))
// | id | nb_pages |
// +---------------+----------+
// | 2005 | 241109 |
// | 2005.08 | 20133 |
// | 2005.08.25 | 620 |
// | 2005.08.25.21 | 151 |
// | 2005-08 | 20133 |
// | 2005-08-25 | 620 |
// | 2005-08-25-21 | 151 |
// +---------------+----------+
$existing_time_keys = array();
if (isset($first_time_key))
{
list($year, $month, $day, $hour) = explode('.', $first_time_key);
$time_keys = array(
sprintf('%4u', $year),
sprintf('%4u.%02u', $year, $month),
sprintf('%4u.%02u.%02u', $year, $month, $day),
sprintf('%4u.%02u.%02u.%02u', $year, $month, $day, $hour),
);
$query = '
SELECT
id,
nb_pages
FROM '.HISTORY_SUMMARY_TABLE.'
WHERE id IN (\''.implode("', '", $time_keys).'\')
;';
$result = pwg_query($query);
while ($row = mysql_fetch_array($result))
{
$existing_time_keys[ $row['id'] ] = $row['nb_pages'];
}
}
$updates = array();
$inserts = array();
foreach (array_keys($need_update) as $time_key)
if (isset($first_time_key))
{
$time_tokens = explode('.', $time_key);
list($year, $month, $day, $hour) = explode('-', $first_time_key);
if (isset($existing_time_keys[$time_key]))
{
array_push(
$updates,
array(
'id' => $time_key,
'nb_pages' => $existing_time_keys[$time_key] + $need_update[$time_key],
$query = '
SELECT *
FROM '.HISTORY_SUMMARY_TABLE.'
WHERE year='.$year.'
AND ( month IS NULL
OR ( month='.$month.'
AND ( day is NULL
OR (day='.$day.'
AND (hour IS NULL OR hour='.$hour.')
)
)
);
}
else
)
)
;';
$result = pwg_query($query);
while ($row = mysql_fetch_assoc($result))
{
array_push(
$key = sprintf('%4u', $row['year']);
if ( isset($row['month']) )
{
$key .= sprintf('-%02u', $row['month']);
if ( isset($row['day']) )
{
$key .= sprintf('-%02u', $row['day']);
if ( isset($row['hour']) )
{
$key .= sprintf('-%02u', $row['hour']);
}
}
}
if (isset($need_update[$key]))
{
$row['nb_pages'] += $need_update[$key];
array_push($updates, $row);
unset($need_update[$key]);
}
}
}
foreach ($need_update as $time_key => $nb_pages)
{
$time_tokens = explode('-', $time_key);
array_push(
$inserts,
array(
'id' => $time_key,
'year' => $time_tokens[0],
'month' => @$time_tokens[1],
'day' => @$time_tokens[2],
'hour' => @$time_tokens[3],
'nb_pages' => $need_update[$time_key],
'nb_pages' => $nb_pages,
)
);
}
}
if (count($updates) > 0)
@@ -259,7 +250,7 @@ if (count($updates) > 0)
mass_updates(
HISTORY_SUMMARY_TABLE,
array(
'primary' => array('id'),
'primary' => array('year','month','day','hour'),
'update' => array('nb_pages'),
),
$updates