Index: /branches/version-2_5-dev/data/class/db/SC_DB_DBFactory.php
===================================================================
--- /branches/version-2_5-dev/data/class/db/SC_DB_DBFactory.php	(revision 18789)
+++ /branches/version-2_5-dev/data/class/db/SC_DB_DBFactory.php	(revision 18790)
@@ -93,12 +93,4 @@
 
     /**
-     * テーブルの存在チェックを行う SQL 文を返す.
-     *
-     * @param string $table_name 存在チェックを行うテーブル名
-     * @return string テーブルの存在チェックを行う SQL 文
-     */
-    function getTableExistsSql($table_name) { return null; }
-
-    /**
      * 昨日の売上高・売上件数を算出する SQL を返す.
      *
@@ -139,26 +131,7 @@
 
     /**
-     * インデックスの検索結果を配列で返す.
-     *
-     * @param string $index_name インデックス名
-     * @param string $table_name テーブル名
-     * @return array インデックスの検索結果の配列
-     */
-    function getTableIndex($index_name, $table_name = "") { return array(); }
-
-    /**
-     * インデックスを作成する.
-     *
-     * @param string $index_name インデックス名
-     * @param string $table_name テーブル名
-     * @param string $col_name カラム名
-     * @param integer $length 作成するインデックスのバイト長
-     * @return void
-     */
-    function createTableIndex($index_name, $table_name, $col_name, $length = 0) {}
-
-    /**
      * テーブルのカラム一覧を取得する.
      *
+     * @deprecated SC_Query::listTableFields() を使用してください
      * @param string $table_name テーブル名
      * @return array テーブルのカラム一覧の配列
@@ -171,4 +144,5 @@
      * 引数に部分一致するテーブル名を配列で返す.
      *
+     * @deprecated SC_Query::listTables() を使用してください
      * @param string $expression 検索文字列
      * @return array テーブル名の配列
Index: /branches/version-2_5-dev/data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.php
===================================================================
--- /branches/version-2_5-dev/data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.php	(revision 18789)
+++ /branches/version-2_5-dev/data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.php	(revision 18790)
@@ -83,16 +83,4 @@
         $arrRet = $objQuery->getAll("SHOW VARIABLES LIKE 'char%'");
         return $arrRet;
-    }
-
-    /**
-     * テーブルの存在チェックを行う SQL 文を返す.
-     *
-     * @param string $table_name 存在チェックを行うテーブル名
-     * @return string テーブルの存在チェックを行う SQL 文
-     */
-    function getTableExistsSql($table_name) {
-        // XXX 何故かブレースホルダが使えない
-        $objQuery =& SC_Query::getSingletonInstance();
-        return "SHOW TABLE STATUS LIKE " . $objQuery->quote($table_name);
     }
 
@@ -170,33 +158,7 @@
 
     /**
-     * インデックスの検索結果を配列で返す.
-     *
-     * @param string $index_name インデックス名
-     * @param string $table_name テーブル名
-     * @return array インデックスの検索結果の配列
-     */
-    function getTableIndex($index_name, $table_name = "") {
-        $objQuery =& SC_Query::getSingletonInstance();
-        return $objQuery->getAll("SHOW INDEX FROM " . $table_name . " WHERE Key_name = ?",
-                                 array($index_name));
-    }
-
-    /**
-     * インデックスを作成する.
-     *
-     * @param string $index_name インデックス名
-     * @param string $table_name テーブル名
-     * @param string $col_name カラム名
-     * @param integer $length 作成するインデックスのバイト長
-     * @return void
-     */
-    function createTableIndex($index_name, $table_name, $col_name, $length = 0) {
-        $objQuery =& SC_Query::getSingletonInstance();
-        $objQuery->query("CREATE INDEX ? ON ? (?(?))", array($index_name, $table_name, $col_name, $length));
-    }
-
-    /**
      * テーブルのカラム一覧を取得する.
      *
+     * @deprecated SC_Query::listTableFields() を使用してください
      * @param string $table_name テーブル名
      * @return array テーブルのカラム一覧の配列
Index: /branches/version-2_5-dev/data/class/db/dbfactory/SC_DB_DBFactory_PGSQL.php
===================================================================
--- /branches/version-2_5-dev/data/class/db/dbfactory/SC_DB_DBFactory_PGSQL.php	(revision 18789)
+++ /branches/version-2_5-dev/data/class/db/dbfactory/SC_DB_DBFactory_PGSQL.php	(revision 18790)
@@ -63,19 +63,4 @@
     function sfChangeMySQL($sql){
         return $sql;
-    }
-
-    /**
-     * テーブルの存在チェックを行う SQL 文を返す.
-     *
-     * @param string $table_name 存在チェックを行うテーブル名
-     * @return string テーブルの存在チェックを行う SQL 文
-     */
-    function getTableExistsSql($table_name) {
-        $objQuery =& SC_Query::getSingletonInstance();
-        return "  SELECT relname "
-             . "    FROM pg_class "
-             . "   WHERE (relkind = 'r' OR relkind = 'v') "
-             . "     AND relname = " . $objQuery->quote($table_name)
-             . "GROUP BY relname";
     }
 
@@ -152,33 +137,7 @@
 
     /**
-     * インデックスの検索結果を配列で返す.
-     *
-     * @param string $index_name インデックス名
-     * @param string $table_name テーブル名（PostgreSQL では使用しない）
-     * @return array インデックスの検索結果の配列
-     */
-    function getTableIndex($index_name, $table_name = "") {
-        $objQuery =& SC_Query::getSingletonInstance();
-        return $objQuery->getAll("SELECT relname FROM pg_class WHERE relname = ?",
-                                 array($index_name));
-    }
-
-    /**
-     * インデックスを作成する.
-     *
-     * @param string $index_name インデックス名
-     * @param string $table_name テーブル名
-     * @param string $col_name カラム名
-     * @param integer $length 作成するインデックスのバイト長
-     * @return void
-     */
-    function createTableIndex($index_name, $table_name, $col_name, $length = 0) {
-        $objQuery =& SC_Query::getSingletonInstance();
-        $objQuery->query("CREATE INDEX ? ON ? (?)", array($index_name, $table_name, $col_name));
-    }
-
-    /**
      * テーブルのカラム一覧を取得する.
      *
+     * @deprecated SC_Query::listTableFields() を使用してください
      * @param string $table_name テーブル名
      * @return array テーブルのカラム一覧の配列
@@ -204,4 +163,5 @@
      * 引数に部分一致するテーブル名を配列で返す.
      *
+     * @deprecated SC_Query::listTables() を使用してください
      * @param string $expression 検索文字列
      * @return array テーブル名の配列
@@ -225,6 +185,5 @@
         return $arrColList[0];
     }
-    
-    
+
     /**
      * 文字コード情報を取得する
Index: /branches/version-2_5-dev/data/class/helper/SC_Helper_Session.php
===================================================================
--- /branches/version-2_5-dev/data/class/helper/SC_Helper_Session.php	(revision 18701)
+++ /branches/version-2_5-dev/data/class/helper/SC_Helper_Session.php	(revision 18790)
@@ -65,5 +65,4 @@
       */
      function sfSessRead($id) {
-         if (!$this->objDb->sfTabaleExists("dtb_session")) return '';
          $objQuery = new SC_Query();
          $arrRet = $objQuery->select("sess_data", "dtb_session", "sess_id = ?", array($id));
@@ -84,5 +83,4 @@
      function sfSessWrite($id, $sess_data)
      {
-         if (!$this->objDb->sfTabaleExists("dtb_session")) return false;
          $objQuery = new SC_Query();
          $count = $objQuery->count("dtb_session", "sess_id = ?", array($id));
@@ -115,5 +113,4 @@
       */
      function sfSessDestroy($id) {
-         if (!$this->objDb->sfTabaleExists("dtb_session")) return false;
          $objQuery = new SC_Query();
          $objQuery->delete("dtb_session", "sess_id = ?", array($id));
@@ -130,5 +127,4 @@
      function sfSessGc($maxlifetime) {
          // MAX_LIFETIME以上更新されていないセッションを削除する。
-         if (!$this->objDb->sfTabaleExists("dtb_session")) return false;
          $objQuery = new SC_Query();
          $where = "update_date < current_timestamp + '-". MAX_LIFETIME . " secs'";
Index: /branches/version-2_5-dev/data/class/helper/SC_Helper_DB.php
===================================================================
--- /branches/version-2_5-dev/data/class/helper/SC_Helper_DB.php	(revision 18789)
+++ /branches/version-2_5-dev/data/class/helper/SC_Helper_DB.php	(revision 18790)
@@ -60,31 +60,4 @@
 
     /**
-     * テーブルの存在をチェックする.
-     *
-     * @param string $table_name チェック対象のテーブル名
-     * @param string $dsn データソース名
-     * @return テーブルが存在する場合 true
-     */
-    function sfTabaleExists($table_name, $dsn = "") {
-        $dbFactory = SC_DB_DBFactory_Ex::getInstance();
-        $dsn = $dbFactory->getDSN($dsn);
-
-        $objQuery =& SC_Query::getSingletonInstance();
-        // 正常に接続されている場合
-        if(!$objQuery->isError()) {
-            list($db_type) = split(":", $dsn);
-            /*
-             * XXX MySQL で, 何故かブレースホルダが使えない.
-             */
-            $sql = $dbFactory->getTableExistsSql($table_name);
-            $arrRet = $objQuery->getAll($sql);
-            if(count($arrRet) > 0) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
      * カラムの存在チェックと作成を行う.
      *
@@ -106,8 +79,9 @@
         $dsn = $dbFactory->getDSN($dsn);
 
+        $objQuery =& SC_Query::getSingletonInstance($dsn);
+
         // テーブルが無ければエラー
-        if(!$this->sfTabaleExists($table_name, $dsn)) return false;
-
-        $objQuery =& SC_Query::getSingletonInstance();
+        if(!in_array($table_name, $objQuery->listTables())) return false;
+
         // 正常に接続されている場合
         if(!$objQuery->isError()) {
@@ -115,9 +89,8 @@
 
             // カラムリストを取得
-            $arrRet = $dbFactory->sfGetColumnList($table_name);
-            if(count($arrRet) > 0) {
-                if(in_array($col_name, $arrRet)){
-                    return true;
-                }
+            $columns = $objQuery->listTableFields($table_name);
+
+            if(in_array($col_name, $columns)){
+                return true;
             }
         }
@@ -126,44 +99,4 @@
         if($add){
             $objQuery->query("ALTER TABLE $table_name ADD $col_name $col_type ");
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * インデックスの存在チェックと作成を行う.
-     *
-     * チェック対象のテーブルに, 該当のインデックスが存在するかチェックする.
-     * 引数 $add が true の場合, 該当のインデックスが存在しない場合は, インデックスの生成を行う.
-     * インデックスの生成も行う場合で, DB_TYPE が mysql の場合は, $length も必須となる.
-     *
-     * @param string $table_name テーブル名
-     * @param string $column_name カラム名
-     * @param string $index_name インデックス名
-     * @param integer|string $length インデックスを作成するデータ長
-     * @param string $dsn データソース名
-     * @param bool $add インデックスの生成もする場合 true
-     * @return bool インデックスが存在する場合とインデックスの生成に成功した場合 true,
-     *               テーブルが存在しない場合 false,
-     *               引数 $add == false でインデックスが存在しない場合 false
-     */
-    function sfIndexExists($table_name, $col_name, $index_name, $length = "", $dsn = "", $add = false) {
-        $dbFactory = SC_DB_DBFactory_Ex::getInstance();
-        $dsn = $dbFactory->getDSN($dsn);
-
-        // テーブルが無ければエラー
-        if (!$this->sfTabaleExists($table_name, $dsn)) return false;
-
-        $objQuery =& SC_Query::getSingletonInstance();
-        $arrRet = $dbFactory->getTableIndex($index_name, $table_name);
-
-        // すでにインデックスが存在する場合
-        if(count($arrRet) > 0) {
-            return true;
-        }
-
-        // インデックスを作成する
-        if($add){
-            $dbFactory->createTableIndex($index_name, $table_name, $col_name, $length());
             return true;
         }
Index: /branches/version-2_5-dev/data/class/SC_Query.php
===================================================================
--- /branches/version-2_5-dev/data/class/SC_Query.php	(revision 18788)
+++ /branches/version-2_5-dev/data/class/SC_Query.php	(revision 18790)
@@ -687,26 +687,43 @@
 
     /**
-     * auto_incrementを取得する.
-     *
-     * XXX MDB2 の sequence 関数を使用する
-     *
-     * @param string $table_name テーブル名
-     * @return integer
-     */
-    function get_auto_increment($table_name){
-        // ロックする
-        $this->conn->exec("LOCK TABLES $table_name WRITE");
-
-        // 次のIncrementを取得
-        $arrRet = $this->getAll("SHOW TABLE STATUS LIKE ". $this->quote($table_name));
-        $auto_inc_no = $arrRet[0]["Auto_increment"];
-
-        // 値をカウントアップしておく
-        $this->conn->exec("ALTER TABLE $table_name AUTO_INCREMENT=" . $this->quote($auto_inc_no + 1));
-
-        // 解除する
-        $this->conn->exec('UNLOCK TABLES');
-
-        return $auto_inc_no;
+     * シーケンスの一覧を取得する.
+     *
+     * @return array シーケンス名の配列
+     */
+    function listSequences() {
+        $this->conn->loadModule('Manager');
+        return $this->conn->listSequences();
+    }
+
+    /**
+     * テーブル一覧を取得する.
+     *
+     * @return array テーブル名の配列
+     */
+    function listTables() {
+        $this->conn->loadModule('Manager');
+        return $this->conn->listTables();
+    }
+
+    /**
+     * テーブルのカラム一覧を取得する.
+     *
+     * @param string $table テーブル名
+     * @return array 指定のテーブルのカラム名の配列
+     */
+    function listTableFields($table) {
+        $this->conn->loadModule('Manager');
+        return $this->conn->listTableFields($table);
+    }
+
+    /**
+     * テーブルのインデックス一覧を取得する.
+     *
+     * @param string $table テーブル名
+     * @return array 指定のテーブルのインデックス一覧
+     */
+    function listTableIndexes($table) {
+        $this->conn->loadModule('Manager');
+        return $this->conn->listTableIndexes($table);
     }
 
Index: /branches/version-2_5-dev/test/class/SC_Query_Test.php
===================================================================
--- /branches/version-2_5-dev/test/class/SC_Query_Test.php	(revision 18773)
+++ /branches/version-2_5-dev/test/class/SC_Query_Test.php	(revision 18790)
@@ -48,4 +48,6 @@
     function tearDown() {
         $this->objQuery->rollback();
+        // MySQL では CREATE TABLE がロールバックされないので DROP TABLE を行う
+        $this->dropTestTable();
         $this->objQuery = null;
     }
@@ -217,4 +219,25 @@
 
         $this->verify();
+    }
+
+    function testListTables() {
+        $tables = $this->objQuery->listTables();
+        $this->assertTrue(in_array("mtb_zip", $tables));
+    }
+
+    function testListSequences() {
+        $sequences = $this->objQuery->listSequences();
+        $this->assertTrue(in_array("dtb_products_product_id", $sequences));
+    }
+
+    function testListTableFields() {
+        $this->expected = array("id", "name", "rank", "remarks");
+        $this->actual = $this->objQuery->listTableFields("mtb_constants");
+        $this->verify();
+    }
+
+    function testListTableIndexes() {
+        $indexes = $this->objQuery->listTableIndexes("dtb_mobile_kara_mail");
+        $this->assertTrue(in_array("dtb_mobile_kara_mail_create_date_key", $indexes));
     }
 
@@ -229,4 +252,8 @@
     }
 
+    function dropTestTable() {
+        return $this->objQuery->query("DROP TABLE test_table");
+    }
+
     function setTestData($column1, $column2, $column3) {
         $fields_values = array($column1, $column2, $column3);
Index: /branches/version-2_5-dev/test/class/helper/SC_Helper_DB_Test.php
===================================================================
--- /branches/version-2_5-dev/test/class/helper/SC_Helper_DB_Test.php	(revision 18763)
+++ /branches/version-2_5-dev/test/class/helper/SC_Helper_DB_Test.php	(revision 18790)
@@ -36,12 +36,4 @@
 
     /**
-     * sfTableExists() のテストケース.
-     */
-    function testSfTableExists() {
-        $objDb = new SC_Helper_DB_Ex();
-        $this->assertEquals(true, $objDb->sfTabaleExists("mtb_zip"));
-    }
-
-    /**
      * sfColumnExists() のテストケース.
      */
Index: /branches/version-2_5-dev/html/install/index.php
===================================================================
--- /branches/version-2_5-dev/html/install/index.php	(revision 18788)
+++ /branches/version-2_5-dev/html/install/index.php	(revision 18790)
@@ -623,7 +623,8 @@
     // 店名、管理者メールアドレスを取得する。(再インストール時)
     if(defined('DEFAULT_DSN')) {
-        $ret = $objDb->sfTabaleExists("dtb_baseinfo", DEFAULT_DSN);
-        if($ret) {
-            $objQuery = new SC_Query();
+        $objQuery = new SC_Query();
+        $tables = $objQuery->listTables();
+        if(in_array("dtb_baseinfo", $tables)) {
+
             $arrRet = $objQuery->select("shop_name, email01", "dtb_baseinfo");
             $shop_name = $arrRet[0]['shop_name'];
