diff options
author | Nils Adermann <naderman@naderman.de> | 2011-11-18 19:17:20 +0100 |
---|---|---|
committer | Nils Adermann <naderman@naderman.de> | 2011-11-18 19:17:20 +0100 |
commit | cfaf0e1e96cb757e02a5ea794a20cd895ef72ea8 (patch) | |
tree | 0fa17c6ab983b7178aac3c9ae715bfd79ac4116f /tests | |
parent | 93c4cdd1dee4a408ef071b6ba67cbd2817f40c83 (diff) | |
parent | 3d893c8222646e95aeae0301d954cfe62aa8486a (diff) | |
download | forums-cfaf0e1e96cb757e02a5ea794a20cd895ef72ea8.tar forums-cfaf0e1e96cb757e02a5ea794a20cd895ef72ea8.tar.gz forums-cfaf0e1e96cb757e02a5ea794a20cd895ef72ea8.tar.bz2 forums-cfaf0e1e96cb757e02a5ea794a20cd895ef72ea8.tar.xz forums-cfaf0e1e96cb757e02a5ea794a20cd895ef72ea8.zip |
Merge remote-tracking branch 'github-nickvergessen/ticket/10296' into develop-olympus
* github-nickvergessen/ticket/10296:
[ticket/10296] Fix CROSS JOIN with INNER JOIN on MSSQL, Postgres and Oracle
[ticket/10296] Add unit test for CROSS JOIN with INNER JOIN
Diffstat (limited to 'tests')
-rw-r--r-- | tests/dbal/cross_join_test.php | 55 | ||||
-rw-r--r-- | tests/dbal/fixtures/massmail_crossjoin.xml | 43 |
2 files changed, 98 insertions, 0 deletions
diff --git a/tests/dbal/cross_join_test.php b/tests/dbal/cross_join_test.php new file mode 100644 index 0000000000..7110c7a2ea --- /dev/null +++ b/tests/dbal/cross_join_test.php @@ -0,0 +1,55 @@ +<?php +/** +* +* @package testing +* @copyright (c) 2011 phpBB Group +* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* +*/ + +require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php'; +require_once dirname(__FILE__) . '/../../phpBB/includes/utf/utf_tools.php'; + +class phpbb_dbal_cross_join_test extends phpbb_database_test_case +{ + public function getDataSet() + { + return $this->createXMLDataSet(dirname(__FILE__).'/fixtures/massmail_crossjoin.xml'); + } + + public function test_cross_join() + { + $db = $this->new_dbal(); + + // http://tracker.phpbb.com/browse/PHPBB3-10296 + // Test CROSS JOIN with INNER JOIN + // Failed on Postgres, MSSQL and Oracle + $db->sql_return_on_error(true); + + $sql_ary = array( + 'SELECT' => 'u.username', + 'FROM' => array( + 'phpbb_users' => 'u', + 'phpbb_user_group' => 'ug', + ), + 'LEFT_JOIN' => array( + array( + 'FROM' => array( + 'phpbb_banlist' => 'b', + ), + 'ON' => 'u.user_id = b.ban_userid', + ), + ), + 'WHERE' => 'ug.group_id = 1 + AND u.user_id = ug.user_id + AND b.ban_id IS NULL', + 'ORDER_BY' => 'u.username', + ); + $sql = $db->sql_build_query('SELECT', $sql_ary); + $result = $db->sql_query($sql); + + $db->sql_return_on_error(false); + + $this->assertEquals(array(array('username' => 'mass email')), $db->sql_fetchrowset($result)); + } +} diff --git a/tests/dbal/fixtures/massmail_crossjoin.xml b/tests/dbal/fixtures/massmail_crossjoin.xml new file mode 100644 index 0000000000..801205eb81 --- /dev/null +++ b/tests/dbal/fixtures/massmail_crossjoin.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<dataset> + <table name="phpbb_banlist"> + <column>ban_id</column> + <column>ban_userid</column> + <row> + <value>1</value> + <value>2</value> + </row> + </table> + <table name="phpbb_users"> + <column>user_id</column> + <column>username</column> + <column>username_clean</column> + <row> + <value>1</value> + <value>mass email</value> + <value>mass email</value> + </row> + <row> + <value>2</value> + <value>banned</value> + <value>banned</value> + </row> + <row> + <value>3</value> + <value>not in group</value> + <value>not in group</value> + </row> + </table> + <table name="phpbb_user_group"> + <column>user_id</column> + <column>group_id</column> + <row> + <value>1</value> + <value>1</value> + </row> + <row> + <value>2</value> + <value>1</value> + </row> + </table> +</dataset> |