mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-04-25 21:32:51 +09:00
Added index hints for CUBRID and Mysql.
git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.0@9472 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
0b8949cfeb
commit
96b60466be
18 changed files with 350 additions and 4 deletions
|
|
@ -13,6 +13,7 @@
|
|||
require_once(_XE_PATH_.'test-phpUnit/db/CubridOnlineTest.php');
|
||||
require_once(_XE_PATH_.'test-phpUnit/db/MssqlTest.php');
|
||||
require_once(_XE_PATH_.'test-phpUnit/db/MssqlOnlineTest.php');
|
||||
require_once(_XE_PATH_.'test-phpUnit/db/MysqlTest.php');
|
||||
|
||||
require_once(_XE_PATH_.'config/config.inc.php');
|
||||
// require_once(_XE_PATH_.'classes/object/Object.class.php');
|
||||
|
|
@ -26,6 +27,7 @@
|
|||
require_once(_XE_PATH_.'classes/db/DB.class.php');
|
||||
require_once(_XE_PATH_.'classes/db/DBCubrid.class.php');
|
||||
require_once(_XE_PATH_.'classes/db/DBMssql.class.php');
|
||||
require_once(_XE_PATH_.'classes/db/DBMysql.class.php');
|
||||
|
||||
require_once(_XE_PATH_.'classes/xml/xmlquery/DBParser.class.php');
|
||||
require_once(_XE_PATH_.'classes/xml/xmlquery/argument/Argument.class.php');
|
||||
|
|
@ -38,6 +40,9 @@
|
|||
require_once(_XE_PATH_.'classes/db/queryparts/expression/UpdateExpression.class.php');
|
||||
require_once(_XE_PATH_.'classes/db/queryparts/table/Table.class.php');
|
||||
require_once(_XE_PATH_.'classes/db/queryparts/table/JoinTable.class.php');
|
||||
require_once(_XE_PATH_.'classes/db/queryparts/table/CubridTableWithHint.class.php');
|
||||
require_once(_XE_PATH_.'classes/db/queryparts/table/MysqlTableWithHint.class.php');
|
||||
require_once(_XE_PATH_.'classes/db/queryparts/table/IndexHint.class.php');
|
||||
require_once(_XE_PATH_.'classes/db/queryparts/condition/ConditionGroup.class.php');
|
||||
require_once(_XE_PATH_.'classes/db/queryparts/condition/Condition.class.php');
|
||||
require_once(_XE_PATH_.'classes/db/queryparts/condition/ConditionWithArgument.class.php');
|
||||
|
|
@ -50,6 +55,7 @@
|
|||
require_once(_XE_PATH_.'classes/db/queryparts/Subquery.class.php');
|
||||
|
||||
require_once(_XE_PATH_.'classes/xml/xmlquery/tags/table/TableTag.class.php');
|
||||
require_once(_XE_PATH_.'classes/xml/xmlquery/tags/table/HintTableTag.class.php');
|
||||
require_once(_XE_PATH_.'classes/xml/xmlquery/tags/condition/ConditionTag.class.php');
|
||||
require_once(_XE_PATH_.'classes/xml/xmlquery/queryargument/QueryArgument.class.php');
|
||||
require_once(_XE_PATH_.'classes/xml/xmlquery/queryargument/SortQueryArgument.class.php');
|
||||
|
|
|
|||
29
test-phpUnit/db/MysqlTest.php
Normal file
29
test-phpUnit/db/MysqlTest.php
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Base class for tests for Mysql SQL syntax
|
||||
*/
|
||||
|
||||
class MysqlTest extends DBTest {
|
||||
|
||||
/**
|
||||
* Prepare runtime context - tell DB class that current DB is CUBRID
|
||||
*/
|
||||
protected function setUp() {
|
||||
$oContext = &Context::getInstance();
|
||||
|
||||
$db_info->master_db = array('db_type' => 'mysql','db_table_prefix' => 'xe_');
|
||||
$db_info->slave_db = array(array('db_type' => 'mysql','db_table_prefix' => 'xe_'));
|
||||
|
||||
$oContext->setDbInfo($db_info);
|
||||
DB::getParser(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Free resources - reset static DB and QueryParser
|
||||
*/
|
||||
protected function tearDown() {
|
||||
unset($GLOBALS['__DB__']);
|
||||
}
|
||||
}
|
||||
?>
|
||||
39
test-phpUnit/db/xml_query/cubrid/CubridIndexHintTest.php
Normal file
39
test-phpUnit/db/xml_query/cubrid/CubridIndexHintTest.php
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
<?php
|
||||
|
||||
class CubridIndexHintTest extends CubridTest {
|
||||
var $xmlPath = 'data/';
|
||||
|
||||
function CubridIndexHintTest(){
|
||||
$this->xmlPath = str_replace('CubridIndexHintTest.php', '', str_replace('\\', '/', __FILE__)) . $this->xmlPath;
|
||||
}
|
||||
|
||||
function _test($xml_file, $argsString, $expected){
|
||||
var_dump($xml_file);
|
||||
$this->_testQuery($xml_file, $argsString, $expected, 'getSelectSql');
|
||||
}
|
||||
|
||||
function testOneUseIndexHintAndOneTable(){
|
||||
$xml_file = $this->xmlPath . "one_index_hint_one_table.xml";
|
||||
$argsString = '';
|
||||
$expected = 'select * from "xe_member" as "member" using index "member"."idx_member_list_order"';
|
||||
$this->_test($xml_file, $argsString, $expected);
|
||||
}
|
||||
|
||||
|
||||
function testTwoUseIndexHintsAndOneTable(){
|
||||
$xml_file = $this->xmlPath . "two_index_hints_one_table.xml";
|
||||
$argsString = '';
|
||||
$expected = 'select * from "xe_member" as "member" using index "member"."idx_member_list_order", "member"."idx_member_srl"';
|
||||
$this->_test($xml_file, $argsString, $expected);
|
||||
}
|
||||
|
||||
function testThreeUseIndexHintsAndTwoTables(){
|
||||
$xml_file = $this->xmlPath . "three_index_hints_two_tables.xml";
|
||||
$argsString = '';
|
||||
$expected = 'select * from "xe_member" as "member", "xe_document" as "document"
|
||||
using index "member"."idx_member_list_order", "member"."idx_member_srl", "document"."idx_document_srl"';
|
||||
$this->_test($xml_file, $argsString, $expected);
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
<query id="index_hint" action="select">
|
||||
<tables>
|
||||
<table name="member" alias="member" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<index_hint for="CUBRID">
|
||||
<index table="member" name="idx_member_list_order" type="USE" />
|
||||
</index_hint>
|
||||
</query>
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
<query id="index_hint" action="select">
|
||||
<tables>
|
||||
<table name="member" alias="member" />
|
||||
<table name="document" alias="document" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<index_hint for="CUBRID">
|
||||
<index table="member" name="idx_member_list_order" type="USE" />
|
||||
<index table="member" name="idx_member_srl" type="USE" />
|
||||
<index table="document" name="idx_document_srl" type="USE" />
|
||||
</index_hint>
|
||||
</query>
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<query id="index_hint" action="select">
|
||||
<tables>
|
||||
<table name="member" alias="member" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<index_hint for="CUBRID">
|
||||
<index table="member" name="idx_member_list_order" type="USE" />
|
||||
<index table="member" name="idx_member_srl" type="USE" />
|
||||
</index_hint>
|
||||
</query>
|
||||
38
test-phpUnit/db/xml_query/mysql/MysqlIndexHintTest.php
Normal file
38
test-phpUnit/db/xml_query/mysql/MysqlIndexHintTest.php
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
|
||||
class MysqlIndexHintTest extends MysqlTest {
|
||||
var $xmlPath = 'data/';
|
||||
|
||||
function MysqlIndexHintTest(){
|
||||
$this->xmlPath = str_replace('MysqlIndexHintTest.php', '', str_replace('\\', '/', __FILE__)) . $this->xmlPath;
|
||||
}
|
||||
|
||||
function _test($xml_file, $argsString, $expected){
|
||||
$this->_testQuery($xml_file, $argsString, $expected, 'getSelectSql');
|
||||
}
|
||||
|
||||
function testOneUseIndexHintAndOneTable(){
|
||||
$xml_file = $this->xmlPath . "one_index_hint_one_table.xml";
|
||||
$argsString = '';
|
||||
$expected = 'select * from `xe_member` as `member` use index (`idx_member_list_order`)';
|
||||
$this->_test($xml_file, $argsString, $expected);
|
||||
}
|
||||
|
||||
|
||||
function testTwoUseIndexHintsAndOneTable(){
|
||||
$xml_file = $this->xmlPath . "two_index_hints_one_table.xml";
|
||||
$argsString = '';
|
||||
$expected = 'select * from `xe_member` as `member` use index (`idx_member_list_order`, `idx_member_srl`)';
|
||||
$this->_test($xml_file, $argsString, $expected);
|
||||
}
|
||||
|
||||
function testThreeUseIndexHintsAndTwoTables(){
|
||||
$xml_file = $this->xmlPath . "three_index_hints_two_tables.xml";
|
||||
$argsString = '';
|
||||
$expected = 'select * from `xe_member` as `member` use index (`idx_member_list_order`, `idx_member_srl`)
|
||||
, `xe_document` as `document` use index (`idx_document_srl`)';
|
||||
$this->_test($xml_file, $argsString, $expected);
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
<query id="index_hint" action="select">
|
||||
<tables>
|
||||
<table name="member" alias="member" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<index_hint for="MYSQL">
|
||||
<index table="member" name="idx_member_list_order" type="USE" />
|
||||
</index_hint>
|
||||
</query>
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
<query id="index_hint" action="select">
|
||||
<tables>
|
||||
<table name="member" alias="member" />
|
||||
<table name="document" alias="document" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<index_hint for="MYSQL">
|
||||
<index table="member" name="idx_member_list_order" type="USE" />
|
||||
<index table="member" name="idx_member_srl" type="USE" />
|
||||
<index table="document" name="idx_document_srl" type="USE" />
|
||||
</index_hint>
|
||||
</query>
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<query id="index_hint" action="select">
|
||||
<tables>
|
||||
<table name="member" alias="member" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<index_hint for="MYSQL">
|
||||
<index table="member" name="idx_member_list_order" type="USE" />
|
||||
<index table="member" name="idx_member_srl" type="USE" />
|
||||
</index_hint>
|
||||
</query>
|
||||
Loading…
Add table
Add a link
Reference in a new issue