[geeklog-cvs] geeklog: More Postgres improvements, committed on behalf of Stan
geeklog-cvs at lists.geeklog.net
geeklog-cvs at lists.geeklog.net
Mon Mar 22 16:16:43 EDT 2010
changeset 7824:6b83ebd560ba
url: http://project.geeklog.net/cgi-bin/hgwebdir.cgi/geeklog/rev/6b83ebd560ba
user: Dirk Haun <dirk at haun-online.de>
date: Mon Mar 22 21:16:36 2010 +0100
description:
More Postgres improvements, committed on behalf of Stan
diffstat:
sql/pgsql_tableanddata.php | 8 +-
system/databases/pgsql.class.php | 100 +++++++++++++++++----------------
2 files changed, 55 insertions(+), 53 deletions(-)
diffs (151 lines):
diff -r 553b381de147 -r 6b83ebd560ba sql/pgsql_tableanddata.php
--- a/sql/pgsql_tableanddata.php Sun Mar 21 20:58:16 2010 +0100
+++ b/sql/pgsql_tableanddata.php Mon Mar 22 21:16:36 2010 +0100
@@ -449,8 +449,8 @@
uid smallint NOT NULL default '1',
tids varchar(255) NOT NULL default '',
etids text,
- aids varchar(255) NOT NULL default '',
- boxes varchar(255) NOT NULL default '',
+ aids varchar(255) NOT NULL default '0',
+ boxes varchar(255) NOT NULL default '0',
noboxes smallint NOT NULL default '0',
maxstories smallint default NULL,
PRIMARY KEY (uid)
@@ -719,8 +719,8 @@
$_DATA[] = "INSERT INTO {$_TABLES['usercomment']} (uid, commentmode, commentorder, commentlimit) VALUES (1,'nested','ASC',100) ";
$_DATA[] = "INSERT INTO {$_TABLES['usercomment']} (uid, commentmode, commentorder, commentlimit) VALUES (2,'threaded','ASC',100) ";
-$_DATA[] = "INSERT INTO {$_TABLES['userindex']} (uid, tids, etids, aids, boxes, noboxes, maxstories) VALUES (1,'','-','','',0,NULL) ";
-$_DATA[] = "INSERT INTO {$_TABLES['userindex']} (uid, tids, etids, aids, boxes, noboxes, maxstories) VALUES (2,'','','','',0,NULL) ";
+$_DATA[] = "INSERT INTO {$_TABLES['userindex']} (uid, tids, etids, aids, boxes, noboxes, maxstories) VALUES (1,'','-','0','0',0,0) ";
+$_DATA[] = "INSERT INTO {$_TABLES['userindex']} (uid, tids, etids, aids, boxes, noboxes, maxstories) VALUES (2,'','','0','0',0,0) ";
$_DATA[] = "INSERT INTO {$_TABLES['userinfo']} (uid, about, pgpkey, userspace, tokens, totalcomments, lastgranted) VALUES (1,NULL,NULL,'',0,0,0) ";
$_DATA[] = "INSERT INTO {$_TABLES['userinfo']} (uid, about, pgpkey, userspace, tokens, totalcomments, lastgranted) VALUES (2,NULL,NULL,'',0,0,0) ";
diff -r 553b381de147 -r 6b83ebd560ba system/databases/pgsql.class.php
--- a/system/databases/pgsql.class.php Sun Mar 21 20:58:16 2010 +0100
+++ b/system/databases/pgsql.class.php Mon Mar 22 21:16:36 2010 +0100
@@ -399,7 +399,8 @@
{
unset($row); unset($result);
$fields_array = explode(',',$fields);
- $values_array = explode(',',$values);
+
+ $values_array = DBINT_parseCsvSqlString($values);
$row = array();
$sql = 'SELECT pg_attribute.attname FROM pg_index, pg_class, pg_attribute
WHERE pg_class.oid = \''.$table.'\'::regclass AND
@@ -416,55 +417,57 @@
$counter=count($row);
if(!empty($row[0]))
{
- $key = array_search($row[0][0],$fields_array);
- if($key!==FALSE) //$fields contains the primary key already
- {
- $validKey=false;
- $sql = "DELETE FROM $table WHERE ";
- if(strlen($values_array[$key])>0 && $values_array[$key]!='UNIX_TIMESTAMP()')
- {
- $sql.="{$row[0][0]}={$values_array[$key]} AND ";
- $validKey = true;
- }
- $fieldno = count($fields_array);
- if($fieldno>1)
+ $key = array_search($row[0][0],$fields_array);
+ if($key!==FALSE)
+ {
+ $sql = "DELETE FROM $table WHERE ";
+ $uniqno = count($row);
+ for($i=0;$i<$uniqno;$i++)
{
- for($i=0;$i<$fieldno;$i++)
- {
- if($fields_array[$i]!=$fields_array[$key] && strlen($values_array[$i])>0 && $values_array[$i] !='-')
- {
- if($values_array[$i]== "'0000-00-00 00:00:00'" || $values_array[$i]=="'-'"
- || $fields_array[$i]=='maxstories' || $fields_array[$i]=='commentorder'
- || $values_array[$i]=='NOW()' || $values_array[$i]=='UNIX_TIMESTAMP()'
- || strlen($values_array[$i])==0) //annoying things
- $n = 'NULL';
- else if($values_array[$i][0]=="'")
- {
- $sql.=$fields_array[$i]." = ".$values_array[$i];
- if($i!=$fieldno-1)
- $sql.=' AND ';
- }
-
- else if($values_array[$i][0]==" " && $values_array[$i][1]=="'") //check for whitespace in first char
- {
- $sql.=$fields_array[$i]." = ".substr($values_array[$i],1);
- if($i!=$fieldno-1)
- $sql.=' AND ';
- }
- else
- {
- $sql.=$fields_array[$i]." = '".$values_array[$i]."'";
- if($i!=$fieldno-1)
- $sql.=' AND ';
- }
- }
- }
+ $key = array_search($row[$i][0],$fields_array);
+ if($key!==FALSE) //$fields contains the primary key already
+ {
+ $validKey=false;
+ if($values_array[$key]!='UNIX_TIMESTAMP()')
+ {
+ if($values_array[$key][0]=="'")
+ {
+ if(substr($sql,-5)!= ' AND ' && substr($sql,-6)!='WHERE ')
+ $sql.=' AND ';
+ $sql.="{$row[$i][0]}={$values_array[$key]}";
+ }
+ else
+ {
+ if(substr($sql,-5)!= ' AND ' && substr($sql,-6)!='WHERE ')
+ $sql.=' AND ';
+ $sql.="{$row[$i][0]}='{$values_array[$key]}'";
+ }
+ }
+ }
}
- if($fieldno>0 && $validKey)
- $result = $this->dbQuery($sql);
-
- $sql="INSERT INTO $table($fields) VALUES($values)";
- }
+ if($uniqno<2)
+ {
+ if($values_array[$key+1]!='UNIX_TIMESTAMP()')
+ {
+ if($values_array[$key+1][0]=="'")
+ {
+ if(substr($sql,-5)!= ' AND ' && substr($sql,-6)!='WHERE ')
+ $sql.=' AND ';
+ $sql.="{$fields_array[$key+1]}={$values_array[$key+1]}";
+ }
+ else
+ {
+ if(substr($sql,-5)!= ' AND ' && substr($sql,-6)!='WHERE ')
+ $sql.=' AND ';
+ $sql.="{$fields_array[$key+1]}='{$values_array[$key+1]}'";
+ }
+ }
+
+ }
+ $this->dbQuery($sql);
+ $sql="INSERT INTO $table ($fields) VALUES ($values)";
+ //$this->dbQuery($sql);
+ }
elseif($counter>1) //we will search for unique fields and see if they are getting duplicates
{
$where_clause='';
@@ -480,7 +483,6 @@
$where_clause .="{$row[$x][0]} ='{$values_array[$key]}'";
}
}
- echo $sql="SELECT COUNT(*) FROM $table WHERE $where_clause";
$result = $this->dbQuery($sql);
$row2 = pg_fetch_row($result);
if($row2[0]!=0){
More information about the geeklog-cvs
mailing list