projects
/
fa-stable.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merged changes from stable branch up to 2.3.23.
[fa-stable.git]
/
includes
/
db
/
connect_db_mysql.inc
diff --git
a/includes/db/connect_db_mysql.inc
b/includes/db/connect_db_mysql.inc
index 4c225796be61f25cdbda7187bd424e7a9edda0ec..622745ce7ab166a8056928d7fd0c55aacc205e19 100644
(file)
--- a/
includes/db/connect_db_mysql.inc
+++ b/
includes/db/connect_db_mysql.inc
@@
-9,17
+9,18
@@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
***********************************************************************/
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
***********************************************************************/
+define('DB_DUPLICATE_ERROR', 1062);
+define('SQL_MODE', ''); // STRICT_ALL_TABLES,NO_ZERO_IN_DATE ?
function set_global_connection($company=-1)
{
function set_global_connection($company=-1)
{
- global $db, $
transaction_level, $
path_to_root, $db_connections;
+ global $db, $path_to_root, $db_connections;
include ($path_to_root . "/config_db.php");
if ($company == -1)
include ($path_to_root . "/config_db.php");
if ($company == -1)
- $company =
$_SESSION["wa_current_user"]->company
;
+ $company =
user_company()
;
cancel_transaction(); // cancel all aborted transactions if any
cancel_transaction(); // cancel all aborted transactions if any
- $transaction_level = 0;
$_SESSION["wa_current_user"]->cur_con = $company;
$_SESSION["wa_current_user"]->cur_con = $company;
@@
-32,46
+33,44
@@
function set_global_connection($company=-1)
///// This non empty sql_mode values can interphere with FA, so all is set empty during
///// our sessions.
///// We are, however, investigating the existing code to be compatible in the future.
///// This non empty sql_mode values can interphere with FA, so all is set empty during
///// our sessions.
///// We are, however, investigating the existing code to be compatible in the future.
- if (strncmp(db_get_version(), "5.6", 3) >= 0)
- db_query("SET sql_mode = ''");
+ db_query("SET sql_mode = '".SQL_MODE."'");
/////
return $db;
}
/////
return $db;
}
-$db_duplicate_error_code = 1062;
-
//DB wrapper functions to change only once for whole application
function db_query($sql, $err_msg=null)
{
//DB wrapper functions to change only once for whole application
function db_query($sql, $err_msg=null)
{
- global $db, $show_sql, $sql_trail, $select_trail, $go_debug, $sql_queries, $Ajax,
- $db_connections, $db_last_inserted_id;
-
+ global $db, $SysPrefs, $sql_queries, $Ajax, $db_connections, $db_last_inserted_id;
+
// set current db prefix
$comp = isset($_SESSION["wa_current_user"]->cur_con) ? $_SESSION["wa_current_user"]->cur_con : 0;
$cur_prefix = $db_connections[$comp]['tbpref'];
$sql = str_replace(TB_PREF, $cur_prefix, $sql);
// set current db prefix
$comp = isset($_SESSION["wa_current_user"]->cur_con) ? $_SESSION["wa_current_user"]->cur_con : 0;
$cur_prefix = $db_connections[$comp]['tbpref'];
$sql = str_replace(TB_PREF, $cur_prefix, $sql);
- if ($show_sql)
+ if ($
SysPrefs->
show_sql)
{
$Ajax->activate('footer_debug');
$sql_queries .= "<pre>$sql</pre>\n<hr>";
}
{
$Ajax->activate('footer_debug');
$sql_queries .= "<pre>$sql</pre>\n<hr>";
}
- // mysql profiling
- global $profile_sql;
- if (@$profile_sql)
- get_usec();
- $result = mysql_query($sql, $db);
- if (@$profile_sql)
- {
- $profile_sql= false;
- _vd($sql.'<br>:'.db_num_rows($result).'rows, '.get_usec());
- }
-
- if($sql_trail) {
+ db_profile(); // mysql profiling
+
+ $retry = MAX_DEADLOCK_RETRY;
+ do {
+ $result = mysql_query($db, $sql);
+ if (mysql_errno($db) == 1213) { // deadlock detected
+ sleep(1); $retry--;
+ } else
+ $retry = 0;
+ } while ($retry);
+
+ db_profile($sql);
+
+ if($SysPrefs->sql_trail) {
$db_last_inserted_id = mysql_insert_id($db); // preserve in case trail insert is done
$db_last_inserted_id = mysql_insert_id($db); // preserve in case trail insert is done
- if ($select_trail || (strstr($sql, 'SELECT') === false)) {
+ if ($
SysPrefs->
select_trail || (strstr($sql, 'SELECT') === false)) {
mysql_query(
"INSERT INTO ".$cur_prefix."sql_trail
(`sql`, `result`, `msg`)
mysql_query(
"INSERT INTO ".$cur_prefix."sql_trail
(`sql`, `result`, `msg`)
@@
-80,51
+79,50
@@
function db_query($sql, $err_msg=null)
}
}
}
}
- if ($err_msg != null || $go_debug) {
+ if ($err_msg != null || $
SysPrefs->
go_debug) {
$exit = $err_msg != null;
if (function_exists('xdebug_call_file'))
$exit = $err_msg != null;
if (function_exists('xdebug_call_file'))
- check_db_error('<br>At file '.xdebug_call_file().':'.xdebug_call_line().':<br>'.$err_msg, $sql, $exit);
- else
- check_db_error($err_msg, $sql, $exit);
+ $err_msg = '<br>At file '.xdebug_call_file().':'.xdebug_call_line().':<br>'.$err_msg;
+ check_db_error($err_msg, $sql, $exit);
}
return $result;
}
}
return $result;
}
-function db_fetch_row
($result)
+function db_fetch_row($result)
{
return mysql_fetch_row($result);
}
{
return mysql_fetch_row($result);
}
-function db_fetch_assoc
($result)
+function db_fetch_assoc($result)
{
return mysql_fetch_assoc($result);
}
{
return mysql_fetch_assoc($result);
}
-function db_fetch
($result)
+function db_fetch($result)
{
return mysql_fetch_array($result);
}
{
return mysql_fetch_array($result);
}
-function db_seek
(&$result,$record)
+function db_seek(&$result,$record)
{
return mysql_data_seek($result, $record);
}
{
return mysql_data_seek($result, $record);
}
-function db_free_result
($result)
+function db_free_result($result)
{
if ($result)
mysql_free_result($result);
}
{
if ($result)
mysql_free_result($result);
}
-function db_num_rows
($result)
+function db_num_rows($result)
{
return mysql_num_rows($result);
}
{
return mysql_num_rows($result);
}
-function db_num_fields
($result)
+function db_num_fields($result)
{
return mysql_num_fields($result);
}
{
return mysql_num_fields($result);
}
@@
-132,7
+130,7
@@
function db_num_fields ($result)
function db_escape($value = "", $nullify = false)
{
$value = @html_entity_decode($value, ENT_QUOTES, $_SESSION['language']->encoding);
function db_escape($value = "", $nullify = false)
{
$value = @html_entity_decode($value, ENT_QUOTES, $_SESSION['language']->encoding);
- $value =
@htmlspecialchars($value, ENT_QUOTES, $_SESSION['language']->encoding
);
+ $value =
html_specials_encode($value
);
//reset default if second parameter is skipped
$nullify = ($nullify === null) ? (false) : ($nullify);
//reset default if second parameter is skipped
$nullify = ($nullify === null) ? (false) : ($nullify);
@@
-158,7
+156,7
@@
function db_escape($value = "", $nullify = false)
return $value;
}
return $value;
}
-function db_error_no
()
+function db_error_no()
{
global $db;
return mysql_errno($db);
{
global $db;
return mysql_errno($db);
@@
-171,9
+169,9
@@
function db_error_msg($conn)
function db_insert_id()
{
function db_insert_id()
{
- global $db_last_inserted_id, $
sql_trail
, $db;
+ global $db_last_inserted_id, $
SysPrefs
, $db;
- return $sql_trail ? $db_last_inserted_id : mysql_insert_id($db);
+ return $
SysPrefs->
sql_trail ? $db_last_inserted_id : mysql_insert_id($db);
}
function db_num_affected_rows()
}
function db_num_affected_rows()
@@
-191,8
+189,7
@@
function db_create_db($connection)
{
$db = mysql_connect($connection["host"] ,
$connection["dbuser"], $connection["dbpassword"]);
{
$db = mysql_connect($connection["host"] ,
$connection["dbuser"], $connection["dbpassword"]);
- if (strncmp(db_get_version(), "5.6", 3) >= 0)
- db_query("SET sql_mode = ''");
+
if (!mysql_select_db($connection["dbname"], $db))
{
$sql = "CREATE DATABASE IF NOT EXISTS " . $connection["dbname"] . "";
if (!mysql_select_db($connection["dbname"], $db))
{
$sql = "CREATE DATABASE IF NOT EXISTS " . $connection["dbname"] . "";
@@
-264,4
+261,12
@@
function db_set_encoding($ui_encoding=null)
mysql_set_charset($mysql_enc);
}
mysql_set_charset($mysql_enc);
}
-?>
\ No newline at end of file
+function db_get_charset($db)
+{
+ return mysql_client_encoding();
+}
+
+function db_set_charset($db, $charset)
+{
+ return mysql_set_charset($charset, $db);
+}