diff --git a/drivers/sqlite/sqlite_sql.php b/drivers/sqlite/sqlite_sql.php index a50ee40..bab2f36 100644 --- a/drivers/sqlite/sqlite_sql.php +++ b/drivers/sqlite/sqlite_sql.php @@ -68,7 +68,7 @@ class SQLite_SQL extends Abstract_SQL { public function table_list() { return <<db->exec(file_get_contents(QTEST_DIR.'/db_files/sqlite.sql')); - } - public function testCreateTable() { - $this->DataCreate(); - - //Attempt to create the table - $sql = $this->db->util->create_table('create_test', - array( - 'id' => 'INTEGER', - 'key' => 'TEXT', - 'val' => 'TEXT', - ), - array( - 'id' => 'PRIMARY KEY' - ) - ); - $this->db->query($sql); - - //Attempt to create the table - $sql = $this->db->util->create_table('create_join', - array( - 'id' => 'INTEGER', - 'key' => 'TEXT', - 'val' => 'TEXT', - ), - array( - 'id' => 'PRIMARY KEY' - ) - ); - $this->db->query($sql); - - // A table to delete - $sql = $this->db->util->create_table('create_delete', - array( - 'id' => 'INTEGER', - 'key' => 'TEXT', - 'val' => 'TEXT', - ), - array( - 'id' => 'PRIMARY KEY' - ) - ); - $this->db->query($sql); + $this->db->exec(file_get_contents(QTEST_DIR.'/db_files/sqlite.sql')); //Check $dbs = $this->db->get_tables(); + $this->assertTrue(in_array('TEST1', $dbs)); + $this->assertTrue(in_array('TEST2', $dbs)); + $this->assertTrue(in_array('NUMBERS', $dbs)); + $this->assertTrue(in_array('NEWTABLE', $dbs)); $this->assertTrue(in_array('create_test', $dbs)); + $this->assertTrue(in_array('create_join', $dbs)); + $this->assertTrue(in_array('create_delete', $dbs)); } // -------------------------------------------------------------------------- @@ -109,10 +71,10 @@ SQL; public function testBackupStructure() { $sql = mb_trim($this->db->util->backup_structure()); - $expected = << 100; -CREATE TABLE "create_delete" ("id" INTEGER PRIMARY KEY, "key" TEXT, "val" TEXT); SQL; $expected_array = explode("\n", $expected); diff --git a/tests/db_files/FB_TEST_DB.FDB b/tests/db_files/FB_TEST_DB.FDB index cbd1daa..f2e29a2 100755 Binary files a/tests/db_files/FB_TEST_DB.FDB and b/tests/db_files/FB_TEST_DB.FDB differ diff --git a/tests/db_files/mysql.sql b/tests/db_files/mysql.sql index 8b13789..1397afa 100644 --- a/tests/db_files/mysql.sql +++ b/tests/db_files/mysql.sql @@ -1 +1,106 @@ +-- sample data to test PostgreSQL INFORMATION_SCHEMA + +-- TABLE TEST +CREATE TABLE IF NOT EXISTS TEST1 ( + TEST_NAME CHAR(30) NOT NULL, + TEST_ID INTEGER DEFAULT '0' NOT NULL, + TEST_DATE TIMESTAMP NOT NULL +); +ALTER TABLE TEST1 DROP CONSTRAINT IF EXISTS PK_TEST CASCADE; +ALTER TABLE TEST1 ADD CONSTRAINT PK_TEST PRIMARY KEY (TEST_ID); + +-- TABLE TEST2 with some CONSTRAINTs and an INDEX +CREATE TABLE IF NOT EXISTS TEST2 ( + ID INTEGER NOT NULL, + FIELD1 INTEGER, + FIELD2 CHAR(15), + FIELD3 VARCHAR(50), + FIELD4 INTEGER, + FIELD5 INTEGER, + ID2 INTEGER NOT NULL +); +ALTER TABLE TEST2 DROP CONSTRAINT IF EXISTS PK_TEST2 CASCADE; +ALTER TABLE TEST2 DROP CONSTRAINT IF EXISTS TEST2_FIELD1ID_IDX CASCADE; +ALTER TABLE TEST2 DROP CONSTRAINT IF EXISTS TEST2_FIELD4_IDX CASCADE; +DROP INDEX IF EXISTS TEST2_FIELD5_IDX; + +ALTER TABLE TEST2 ADD CONSTRAINT PK_TEST2 PRIMARY KEY (ID2); +ALTER TABLE TEST2 ADD CONSTRAINT TEST2_FIELD1ID_IDX UNIQUE (ID, FIELD1); +ALTER TABLE TEST2 ADD CONSTRAINT TEST2_FIELD4_IDX UNIQUE (FIELD4); +CREATE INDEX TEST2_FIELD5_IDX ON TEST2(FIELD5); + +-- TABLE NUMBERS +CREATE TABLE IF NOT EXISTS NUMBERS ( + NUMBER INTEGER DEFAULT '0' NOT NULL, + EN CHAR(100) NOT NULL, + FR CHAR(100) NOT NULL +); + +-- TABLE NEWTABLE +CREATE TABLE IF NOT EXISTS NEWTABLE ( + ID INT DEFAULT 0 NOT NULL, + SOMENAME VARCHAR (12), + SOMEDATE TIMESTAMP NOT NULL +); +ALTER TABLE NEWTABLE DROP CONSTRAINT IF EXISTS PKINDEX_IDX CASCADE; +ALTER TABLE NEWTABLE ADD CONSTRAINT PKINDEX_IDX PRIMARY KEY (ID); + +DROP SEQUENCE IF EXISTS NEWTABLE_SEQ CASCADE; +CREATE SEQUENCE NEWTABLE_SEQ INCREMENT 1 START 1; + +-- VIEW on TEST +CREATE OR REPLACE VIEW "testview"( + TEST_NAME, + TEST_ID, + TEST_DATE +) AS +SELECT * +FROM TEST1 +WHERE TEST_NAME LIKE 't%'; + +-- VIEW on NUMBERS +CREATE OR REPLACE VIEW "numbersview"( + NUMBER, + TRANS_EN, + TRANS_FR +) AS +SELECT * +FROM NUMBERS +WHERE NUMBER > 100; + +-- TRIGGER on NEWTABLE +DROP FUNCTION IF EXISTS add_stamp() CASCADE; +CREATE OR REPLACE FUNCTION add_stamp() RETURNS OPAQUE AS ' + BEGIN + IF (NEW.somedate IS NULL OR NEW.somedate = 0) THEN + NEW.somedate := CURRENT_TIMESTAMP; + RETURN NEW; + END IF; + END; +' LANGUAGE 'plpgsql'; + +DROP TRIGGER IF EXISTS ADDCURRENTDATE ON newtable; + +CREATE TRIGGER ADDCURRENTDATE +BEFORE INSERT OR UPDATE +ON newtable FOR EACH ROW + EXECUTE PROCEDURE add_stamp(); + +-- TABLEs for testing CONSTRAINTs +CREATE TABLE IF NOT EXISTS testconstraints ( + someid integer NOT NULL, + somename character varying(10) NOT NULL, + CONSTRAINT testconstraints_id_pk PRIMARY KEY (someid) +); +CREATE TABLE IF NOT EXISTS testconstraints2 ( + ext_id integer NOT NULL, + modified date, + uniquefield character varying(10) NOT NULL, + usraction integer NOT NULL, + CONSTRAINT testconstraints_id_fk FOREIGN KEY (ext_id) + REFERENCES testconstraints (someid) MATCH SIMPLE + ON UPDATE CASCADE ON DELETE CASCADE, + CONSTRAINT unique_2_fields_idx UNIQUE (modified, usraction), + CONSTRAINT uniquefld_idx UNIQUE (uniquefield) +); diff --git a/tests/db_files/sqlite.sql b/tests/db_files/sqlite.sql index 9d4bd0c..f4f733a 100644 --- a/tests/db_files/sqlite.sql +++ b/tests/db_files/sqlite.sql @@ -1,4 +1,7 @@ -- sample data to test SQLite +CREATE TABLE IF NOT EXISTS "create_test" ("id" INTEGER PRIMARY KEY, "key" TEXT, "val" TEXT); +CREATE TABLE IF NOT EXISTS "create_join" ("id" INTEGER PRIMARY KEY, "key" TEXT, "val" TEXT); +CREATE TABLE IF NOT EXISTS "create_delete" ("id" INTEGER PRIMARY KEY, "key" TEXT, "val" TEXT); -- TABLE TEST DROP TABLE IF EXISTS TEST1;