aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoas Schilling <nickvergessen@gmx.de>2012-06-20 12:41:26 +0200
committerJoas Schilling <nickvergessen@gmx.de>2012-06-20 12:41:26 +0200
commitc8e322d88f8195727c18eac90d30a5919e6fb8a0 (patch)
treef43f6949e16215488f9b133ab4a651f59496de8f
parent4fbbbfcebb6f8ed9867cb61623767a2f4c191ed6 (diff)
downloadforums-c8e322d88f8195727c18eac90d30a5919e6fb8a0.tar
forums-c8e322d88f8195727c18eac90d30a5919e6fb8a0.tar.gz
forums-c8e322d88f8195727c18eac90d30a5919e6fb8a0.tar.bz2
forums-c8e322d88f8195727c18eac90d30a5919e6fb8a0.tar.xz
forums-c8e322d88f8195727c18eac90d30a5919e6fb8a0.zip
[ticket/10942] Fix sql_conditional for mssql, postgre and oracle
PHPBB3-10942
-rw-r--r--phpBB/includes/db/mssql.php12
-rw-r--r--phpBB/includes/db/mssql_odbc.php12
-rw-r--r--phpBB/includes/db/mssqlnative.php12
-rw-r--r--phpBB/includes/db/oracle.php12
-rw-r--r--phpBB/includes/db/postgres.php12
5 files changed, 60 insertions, 0 deletions
diff --git a/phpBB/includes/db/mssql.php b/phpBB/includes/db/mssql.php
index 16b3b3c600..ca8846b60d 100644
--- a/phpBB/includes/db/mssql.php
+++ b/phpBB/includes/db/mssql.php
@@ -94,6 +94,18 @@ class dbal_mssql extends dbal
/**
* {@inheritDoc}
*/
+ function sql_conditional($condition, $action_true, $action_false = false)
+ {
+ $sql_condition = 'CASE WHEN ' . $condition;
+ $sql_condition .= ' THEN CAST(' . $action_true . ' AS VARCHAR)';
+ $sql_condition .= ($action_false !== false) ? ' ELSE CAST(' . $action_false . ' AS VARCHAR)' : '';
+ $sql_condition .= ' END';
+ return $sql_condition;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
function sql_concatenate($string1, $string2)
{
return $string1 . ' + ' . $string2;
diff --git a/phpBB/includes/db/mssql_odbc.php b/phpBB/includes/db/mssql_odbc.php
index c1ee1b43f0..814dd76373 100644
--- a/phpBB/includes/db/mssql_odbc.php
+++ b/phpBB/includes/db/mssql_odbc.php
@@ -112,6 +112,18 @@ class dbal_mssql_odbc extends dbal
/**
* {@inheritDoc}
*/
+ function sql_conditional($condition, $action_true, $action_false = false)
+ {
+ $sql_condition = 'CASE WHEN ' . $condition;
+ $sql_condition .= ' THEN CAST(' . $action_true . ' AS VARCHAR)';
+ $sql_condition .= ($action_false !== false) ? ' ELSE CAST(' . $action_false . ' AS VARCHAR)' : '';
+ $sql_condition .= ' END';
+ return $sql_condition;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
function sql_concatenate($string1, $string2)
{
return $string1 . ' + ' . $string2;
diff --git a/phpBB/includes/db/mssqlnative.php b/phpBB/includes/db/mssqlnative.php
index db1bb86620..c6c34c8612 100644
--- a/phpBB/includes/db/mssqlnative.php
+++ b/phpBB/includes/db/mssqlnative.php
@@ -260,6 +260,18 @@ class dbal_mssqlnative extends dbal
/**
* {@inheritDoc}
*/
+ function sql_conditional($condition, $action_true, $action_false = false)
+ {
+ $sql_condition = 'CASE WHEN ' . $condition;
+ $sql_condition .= ' THEN CAST(' . $action_true . ' AS VARCHAR)';
+ $sql_condition .= ($action_false !== false) ? ' ELSE CAST(' . $action_false . ' AS VARCHAR)' : '';
+ $sql_condition .= ' END';
+ return $sql_condition;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
function sql_concatenate($string1, $string2)
{
return $string1 . ' + ' . $string2;
diff --git a/phpBB/includes/db/oracle.php b/phpBB/includes/db/oracle.php
index 2e801532f0..f09e702951 100644
--- a/phpBB/includes/db/oracle.php
+++ b/phpBB/includes/db/oracle.php
@@ -90,6 +90,18 @@ class dbal_oracle extends dbal
}
/**
+ * {@inheritDoc}
+ */
+ function sql_conditional($condition, $action_true, $action_false = false)
+ {
+ $sql_condition = 'CASE WHEN ' . $condition;
+ $sql_condition .= ' THEN CAST(' . $action_true . ' AS clob)';
+ $sql_condition .= ($action_false !== false) ? ' ELSE CAST(' . $action_false . ' AS clob)' : '';
+ $sql_condition .= ' END';
+ return $sql_condition;
+ }
+
+ /**
* SQL Transaction
* @access private
*/
diff --git a/phpBB/includes/db/postgres.php b/phpBB/includes/db/postgres.php
index dddf615f9c..a27fbb9d9f 100644
--- a/phpBB/includes/db/postgres.php
+++ b/phpBB/includes/db/postgres.php
@@ -157,6 +157,18 @@ class dbal_postgres extends dbal
/**
* {@inheritDoc}
*/
+ function sql_conditional($condition, $action_true, $action_false = false)
+ {
+ $sql_condition = 'CASE WHEN ' . $condition;
+ $sql_condition .= ' THEN CAST(' . $action_true . ' AS TEXT)';
+ $sql_condition .= ($action_false !== false) ? ' ELSE CAST(' . $action_false . ' AS TEXT)' : '';
+ $sql_condition .= ' END';
+ return $sql_condition;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
function sql_concatenate($string1, $string2)
{
return $string1 . ' || ' . $string2;