Page MenuHomePhabricator

D16971.diff
No OneTemporary

D16971.diff

diff --git a/src/aphront/storage/connection/mysql/AphrontMySQLDatabaseConnection.php b/src/aphront/storage/connection/mysql/AphrontMySQLDatabaseConnection.php
--- a/src/aphront/storage/connection/mysql/AphrontMySQLDatabaseConnection.php
+++ b/src/aphront/storage/connection/mysql/AphrontMySQLDatabaseConnection.php
@@ -93,9 +93,39 @@
if (!$ok) {
mysql_set_charset('binary', $conn);
}
+
+ $this->set_sql_mode(array(
+ 'STRICT_ALL_TABLES',
+ 'NO_ZERO_IN_DATE',
+ 'NO_ZERO_DATE',
+ 'ERROR_FOR_DIVISION_BY_ZERO',
+ 'NO_AUTO_CREATE_USER',
+ 'NO_ENGINE_SUBSTITUTION'),
+ $conn);
return $conn;
}
+
+ protected function set_sql_mode($modes = array(), $conn) {
+ if (empty($modes)) {
+ $res = mysql_query('SELECT @@SESSION.sql_mode', $conn);
+ if (empty($res)) {
+ return;
+ }
+
+ $modes_str = mysql_result($res, 0);
+ if (empty($modes_str)) {
+ return;
+ }
+
+ $modes = explode(',', $modes_str);
+ }
+
+ $modes = array_change_key_case($modes, CASE_UPPER);
+ $modes_str = implode(',', $modes);
+
+ mysql_query("SET SESSION sql_mode='$modes_str'", $conn);
+ }
protected function rawQuery($raw_query) {
return @mysql_query($raw_query, $this->requireConnection());
diff --git a/src/aphront/storage/connection/mysql/AphrontMySQLiDatabaseConnection.php b/src/aphront/storage/connection/mysql/AphrontMySQLiDatabaseConnection.php
--- a/src/aphront/storage/connection/mysql/AphrontMySQLiDatabaseConnection.php
+++ b/src/aphront/storage/connection/mysql/AphrontMySQLiDatabaseConnection.php
@@ -80,9 +80,43 @@
if (!$ok) {
$ok = $conn->set_charset('binary');
}
+
+ $this->set_sql_mode(array(
+ 'STRICT_ALL_TABLES',
+ 'NO_ZERO_IN_DATE',
+ 'NO_ZERO_DATE',
+ 'ERROR_FOR_DIVISION_BY_ZERO',
+ 'NO_AUTO_CREATE_USER',
+ 'NO_ENGINE_SUBSTITUTION'),
+ $conn);
return $conn;
}
+
+ protected function set_sql_mode($modes = array(), $conn) {
+ if (empty($modes)) {
+ $res = mysqli_query($conn, 'SELECT @@SESSION.sql_mode');
+ if (empty($res)) {
+ return;
+ }
+
+ $modes_array = mysqli_fetch_array($res);
+ if (empty($modes_array)) {
+ return;
+ }
+ $modes_str = $modes_array[0];
+ if (empty($modes_str)) {
+ return;
+ }
+
+ $modes = explode(',', $modes_str);
+ }
+
+ $modes = array_change_key_case($modes, CASE_UPPER);
+ $modes_str = implode(',', $modes);
+
+ mysqli_query($conn, "SET SESSION sql_mode='$modes_str'");
+ }
protected function rawQuery($raw_query) {
$conn = $this->requireConnection();

File Metadata

Mime Type
text/plain
Expires
Sun, Aug 31, 6:48 PM (19 h, 25 m ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
9059427
Default Alt Text
D16971.diff (2 KB)

Event Timeline