version 1.83, 2008/01/18 20:09:55
|
version 1.90, 2011/03/03 05:15:38
|
Line 39 class metabase_mysql_class extends metab
|
Line 39 class metabase_mysql_class extends metab
|
"optimize"=>"", |
"optimize"=>"", |
"explain"=>"" |
"explain"=>"" |
); |
); |
|
var $text_type = "TEXT"; |
|
|
Function Connect() |
Function Connect() |
{ |
{ |
Line 65 class metabase_mysql_class extends metab
|
Line 66 class metabase_mysql_class extends metab
|
$this->fixed_float=$this->options["FixedFloat"]; |
$this->fixed_float=$this->options["FixedFloat"]; |
else |
else |
{ |
{ |
if(($result=mysql_query("SELECT VERSION()",$this->connection))) |
$query = "SELECT VERSION()"; |
|
$this->Debug("Query: $query"); |
|
if(($result=mysql_query($query,$this->connection))) |
{ |
{ |
$version=explode(".",mysql_result($result,0,0)); |
$version=explode(".",mysql_result($result,0,0)); |
$major=intval($version[0]); |
$major=intval($version[0]); |
Line 80 class metabase_mysql_class extends metab
|
Line 83 class metabase_mysql_class extends metab
|
mysql_free_result($result); |
mysql_free_result($result); |
} |
} |
} |
} |
|
if(IsSet($this->options["CharacterSet"])) |
|
{ |
|
$character_set = $this->options["CharacterSet"]; |
|
$this->EscapeText($character_set); |
|
$query = "SET NAMES '".$character_set."'"; |
|
$this->Debug("Query: $query"); |
|
if(!mysql_query($query,$this->connection)) |
|
{ |
|
mysql_Close($this->connection); |
|
$this->connection=0; |
|
$this->affected_rows=-1; |
|
return(0); |
|
} |
|
} |
if(IsSet($this->supported["Transactions"]) |
if(IsSet($this->supported["Transactions"]) |
&& !$this->auto_commit) |
&& !$this->auto_commit) |
{ |
{ |
if(!mysql_query("SET AUTOCOMMIT=0",$this->connection)) |
$query = "SET AUTOCOMMIT=0"; |
|
$this->Debug("Query: $query"); |
|
if(!mysql_query($query,$this->connection)) |
{ |
{ |
mysql_Close($this->connection); |
mysql_Close($this->connection); |
$this->connection=0; |
$this->connection=0; |
Line 114 class metabase_mysql_class extends metab
|
Line 133 class metabase_mysql_class extends metab
|
|
|
Function Query($query) |
Function Query($query) |
{ |
{ |
$this->Debug("Query: $query"); |
$context = array( |
|
'Query'=>$query |
|
); |
$first=$this->first_selected_row; |
$first=$this->first_selected_row; |
$limit=$this->selected_row_limit; |
$limit=$this->selected_row_limit; |
$this->first_selected_row=$this->selected_row_limit=0; |
$this->first_selected_row=$this->selected_row_limit=0; |
if(!strcmp($this->database_name,"")) |
if(!strcmp($this->database_name,"")) |
return($this->SetError("Query","it was not specified a valid database name to select")); |
return($this->SetError("Query","it was not specified a valid database name to select", $context)); |
if(!$this->Connect()) |
if(!$this->Connect()) |
return(0); |
return(0); |
|
$this->Debug("Query: $query"); |
$query_string=strtolower(strtok(ltrim($query)," \t\n\r")); |
$query_string=strtolower(strtok(ltrim($query)," \t\n\r")); |
if(($select=IsSet($this->select_queries[$query_string])) |
if(($select=IsSet($this->select_queries[$query_string])) |
&& $limit>0) |
&& $limit>0) |
$query.=" LIMIT $first,$limit"; |
$query.=" LIMIT $first,$limit"; |
|
$start = microtime(); |
if(mysql_select_db($this->database_name,$this->connection) |
if(mysql_select_db($this->database_name,$this->connection) |
&& ($result=mysql_query($query,$this->connection))) |
&& ($result=mysql_query($query,$this->connection))) |
{ |
{ |
Line 135 class metabase_mysql_class extends metab
|
Line 158 class metabase_mysql_class extends metab
|
{ |
{ |
case "resource": |
case "resource": |
case "integer": |
case "integer": |
$this->highest_fetched_row[$result]=-1; |
$this->highest_fetched_row[intval($result)]=-1; |
break; |
break; |
default: |
default: |
$error=mysql_error($this->connection); |
$error=mysql_error($this->connection); |
return($this->SetError("Query","this select query did not return valid result set value: ".$query.(strlen($error) ? " (".$error.")" : ""))); |
return($this->SetError("Query","this select query did not return valid result set value: ".$query.(strlen($error) ? " (".$error.")" : ""), $context)); |
} |
} |
} |
} |
else |
else |
$this->affected_rows=mysql_affected_rows($this->connection); |
$this->affected_rows=mysql_affected_rows($this->connection); |
} |
} |
else |
else |
return($this->SetError("Query",mysql_error($this->connection))); |
{ |
|
list($end_micro, $end_seconds) = explode(' ', microtime()); |
|
list($start_micro, $start_seconds) = explode(' ', microtime()); |
|
$context['Duration'] = $end_seconds + $end_micro - $start_seconds - $start_micro; |
|
return($this->SetError("Query", mysql_error($this->connection), $context)); |
|
} |
return($result); |
return($result); |
} |
} |
|
|
Line 215 class metabase_mysql_class extends metab
|
Line 243 class metabase_mysql_class extends metab
|
|
|
Function EndOfResult($result) |
Function EndOfResult($result) |
{ |
{ |
if(!IsSet($this->highest_fetched_row[$result])) |
$r = intval($result); |
|
if(!IsSet($this->highest_fetched_row[$r])) |
{ |
{ |
$this->SetError("End of result","attempted to check the end of an unknown result"); |
$this->SetError("End of result","attempted to check the end of an unknown result"); |
return(-1); |
return(-1); |
} |
} |
return($this->highest_fetched_row[$result]>=$this->NumberOfRows($result)-1); |
return($this->highest_fetched_row[$r]>=$this->NumberOfRows($result)-1); |
} |
} |
|
|
Function FetchResult($result,$row,$field) |
Function FetchResult($result,$row,$field) |
{ |
{ |
$this->highest_fetched_row[$result]=max($this->highest_fetched_row[$result],$row); |
$r = intval($result); |
|
$this->highest_fetched_row[$r]=max($this->highest_fetched_row[$r],$row); |
return(mysql_result($result,$row,$field)); |
return(mysql_result($result,$row,$field)); |
} |
} |
|
|
Line 234 class metabase_mysql_class extends metab
|
Line 264 class metabase_mysql_class extends metab
|
if(!mysql_data_seek($result,$row) |
if(!mysql_data_seek($result,$row) |
|| !($array=mysql_fetch_row($result))) |
|| !($array=mysql_fetch_row($result))) |
return($this->SetError("Fetch result array",mysql_error($this->connection))); |
return($this->SetError("Fetch result array",mysql_error($this->connection))); |
$this->highest_fetched_row[$result]=max($this->highest_fetched_row[$result],$row); |
$r = intval($result); |
|
$this->highest_fetched_row[$r]=max($this->highest_fetched_row[$r],$row); |
return($this->ConvertResultRow($result,$array)); |
return($this->ConvertResultRow($result,$array)); |
} |
} |
|
|
Line 278 class metabase_mysql_class extends metab
|
Line 309 class metabase_mysql_class extends metab
|
|
|
Function FreeResult($result) |
Function FreeResult($result) |
{ |
{ |
UnSet($this->highest_fetched_row[$result]); |
$r = intval($result); |
UnSet($this->columns[$result]); |
UnSet($this->highest_fetched_row[$r]); |
UnSet($this->result_types[$result]); |
UnSet($this->columns[$r]); |
|
UnSet($this->result_types[$r]); |
|
UnSet($this->result_columns[$r]); |
return(mysql_free_result($result)); |
return(mysql_free_result($result)); |
} |
} |
|
|
Line 334 class metabase_mysql_class extends metab
|
Line 367 class metabase_mysql_class extends metab
|
return("$name $type".(IsSet($field["notnull"]) ? " NOT NULL" : "")); |
return("$name $type".(IsSet($field["notnull"]) ? " NOT NULL" : "")); |
} |
} |
|
|
|
Function GetTextFieldTypeDeclaration($name,&$field) |
|
{ |
|
return((IsSet($field["length"]) ? "$name CHAR (".$field["length"].")" : $name." ".$this->text_type).(IsSet($field["default"]) ? " DEFAULT ".$this->GetTextFieldValue($field["default"]) : "").(IsSet($field["notnull"]) ? " NOT NULL" : "")); |
|
} |
|
|
Function GetIntegerFieldTypeDeclaration($name,&$field) |
Function GetIntegerFieldTypeDeclaration($name,&$field) |
{ |
{ |
return("$name ".(IsSet($field["unsigned"]) ? "INT UNSIGNED" : "INT").(IsSet($field["autoincrement"]) ? " AUTO_INCREMENT" : (IsSet($field["default"]) ? " DEFAULT ".$field["default"] : "")).(IsSet($field["notnull"]) ? " NOT NULL" : "")); |
return("$name ".(IsSet($field["unsigned"]) ? "INT UNSIGNED" : "INT").(IsSet($field["autoincrement"]) ? " AUTO_INCREMENT" : (IsSet($field["default"]) ? " DEFAULT ".$field["default"] : "")).(IsSet($field["notnull"]) ? " NOT NULL" : "")); |
Line 574 class metabase_mysql_class extends metab
|
Line 612 class metabase_mysql_class extends metab
|
return($this->options["DefaultTableType"]." is not a supported default table type"); |
return($this->options["DefaultTableType"]." is not a supported default table type"); |
} |
} |
} |
} |
|
if(IsSet($this->options["TextColumnType"])) |
|
{ |
|
switch($this->text_type=strtoupper($this->options["TextColumnType"])) |
|
{ |
|
case "TINYTEXT": |
|
case "TEXT": |
|
case "MEDIUMTEXT": |
|
case "LARGETEXT": |
|
break; |
|
default: |
|
return($this->options["TextColumnType"]." is not a supported type for unspecified length text columns"); |
|
} |
|
} |
if(IsSet($this->options["EmulateDecimal"]) |
if(IsSet($this->options["EmulateDecimal"]) |
&& $this->options["EmulateDecimal"]) |
&& $this->options["EmulateDecimal"]) |
{ |
{ |