diff options
Diffstat (limited to 'phpBB/includes/db/mssql.php')
| -rw-r--r-- | phpBB/includes/db/mssql.php | 50 |
1 files changed, 24 insertions, 26 deletions
diff --git a/phpBB/includes/db/mssql.php b/phpBB/includes/db/mssql.php index bbbe8a6de3..422a5d44a4 100644 --- a/phpBB/includes/db/mssql.php +++ b/phpBB/includes/db/mssql.php @@ -36,6 +36,8 @@ class dbal_mssql extends dbal $this->dbname = $database; @ini_set('mssql.charset', 'UTF-8'); + @ini_set('mssql.textlimit', 2147483647); + @ini_set('mssql.textsize', 2147483647); $this->db_connect_id = ($this->persistency) ? @mssql_pconnect($this->server, $this->user, $sqlpassword, $new_link) : @mssql_connect($this->server, $this->user, $sqlpassword, $new_link); @@ -236,7 +238,7 @@ class dbal_mssql extends dbal * Seek to given row number * rownum is zero-based */ - function sql_rowseek($rownum, $query_id = false) + function sql_rowseek($rownum, &$query_id) { global $cache; @@ -307,6 +309,15 @@ class dbal_mssql extends dbal } /** + * Build LIKE expression + * @access private + */ + function _sql_like_expression($expression) + { + return $expression . " ESCAPE '\\'"; + } + + /** * return sql error array * @access private */ @@ -372,35 +383,22 @@ class dbal_mssql extends dbal switch ($mode) { case 'start': - $explain_query = $query; - if (preg_match('/UPDATE ([a-z0-9_]+).*?WHERE(.*)/s', $query, $m)) - { - $explain_query = 'SELECT * FROM ' . $m[1] . ' WHERE ' . $m[2]; - } - else if (preg_match('/DELETE FROM ([a-z0-9_]+).*?WHERE(.*)/s', $query, $m)) + $html_table = false; + @mssql_query('SET SHOWPLAN_TEXT ON;', $this->db_connect_id); + if ($result = @mssql_query($query, $this->db_connect_id)) { - $explain_query = 'SELECT * FROM ' . $m[1] . ' WHERE ' . $m[2]; - } - - if (preg_match('/^SELECT/', $explain_query)) - { - $html_table = false; - @mssql_query('SET SHOWPLAN_TEXT ON;', $this->db_connect_id); - if ($result = @mssql_query($explain_query, $this->db_connect_id)) + @mssql_next_result($result); + while ($row = @mssql_fetch_row($result)) { - @mssql_next_result($result); - while ($row = @mssql_fetch_row($result)) - { - $html_table = $this->sql_report('add_select_row', $query, $html_table, $row); - } + $html_table = $this->sql_report('add_select_row', $query, $html_table, $row); } - @mssql_query('SET SHOWPLAN_TEXT OFF;', $this->db_connect_id); - @mssql_free_result($result); + } + @mssql_query('SET SHOWPLAN_TEXT OFF;', $this->db_connect_id); + @mssql_free_result($result); - if ($html_table) - { - $this->html_hold .= '</table>'; - } + if ($html_table) + { + $this->html_hold .= '</table>'; } break; |
