Unique index validator ====================== - The class name ezcDbSchemaNonUniqueIndexNameValidator sounds a bit strange. I think ezcDbSchemaUniqueIndexNameValidator would fit better, since it indicates what is validated and not what violates the validation. - Changed Table prefixes ============== - The prefix mechanism simply removes a string with the length of the prefix from tables when a schema is read from a DB. We should check there if the actual prefix is used and throw an exception if this is not the case. - No, we should not. The whole idea is that you can multiple "applications" in the database, each with a different prefix. Throwing an exception when another "application" is found would be a real PITA. - The condition :: if ( $prefix === '' || $tableName !== $tableNameWithoutPrefix ) (DatabaseSchema/src/handlers/sqlite/reader.php +74) looks like a tautology. Same for the other handlers. - Not really, as the table should be scanned both: - if there is no prefix configured - if the $tableName has the prefix, in which case it get's stripped out with $tableNameWithoutPrefix = substr( $tableName, strlen( $prefix ) );, and thus $tableName and $tableNameWithoutPrefix are different then. If it does *not* have the prefix, the two variables would have the same content. I added a comment to the code about it. - The fetchSchema() method looks the same for all handlers except for the pure SQL statement. Those should be moved to a common method in ezcDbSchemaDbReader. - Done - The interface ezcDbSchemaDbWriter was changed in this commit, the method isQueryAllowed() was added. This looks like a BC break. - It isn't, as the base class ezcDbSchemaCommonSqlWriter implements isQueryAllowed. - The interface ezcDbSchemaDbReader was made an abstract class, which looks like a BC break. - Fixed, I think in a non BC-way, but please double check. General ======= - 7 test failures with 5.1.6 and 5.2.6 and SQLite in memory DB: :: Time: 1 second There were 7 failures: 1) testConstructorAllDefault(ezcDatabaseSchemaFieldTest) Failed asserting that matches expected value . expected integer <0> difference <0> got integer < > /home/dotxp/dev/PHP/actual/ezcomponents/trunk/DatabaseSchema/tests/schema_field_test.php:21 2) testConstructorAllGiven2(ezcDatabaseSchemaFieldTest) Failed asserting that matches expected value . expected integer <0> difference <0> got integer < > /home/dotxp/dev/PHP/actual/ezcomponents/trunk/DatabaseSchema/tests/schema_field_test.php:43 3) testXmlInternal2(ezcDatabaseSchemaSqliteTest) Failed asserting that two objects are equal. --- Expected +++ Actual @@ -14,10 +14,10 @@ [is_shadow] => ezcDbSchemaField Object ( - [type] => boolean + [type] => integer [length] => 0 [notNull] => 1 - [default] => false + [default] => 0 [autoIncrement] => [unsigned] => ) @@ -53,7 +53,7 @@ ) [primary] => - [unique] => + [unique] => 1 ) ) /home/dotxp/dev/PHP/actual/ezcomponents/trunk/DatabaseSchema/tests/generic_test.php:227 4) testXmlInternal3(ezcDatabaseSchemaSqliteTest) Failed asserting that two objects are equal. --- Expected +++ Actual @@ -28,7 +28,7 @@ ) [primary] => - [unique] => + [unique] => 1 ) ) /home/dotxp/dev/PHP/actual/ezcomponents/trunk/DatabaseSchema/tests/generic_test.php:253 5) testXmlInternal4(ezcDatabaseSchemaSqliteTest) Failed asserting that two objects are equal. --- Expected +++ Actual @@ -6,7 +6,7 @@ ( [type] => text [length] => 255 - [notNull] => 1 + [notNull] => [default] => [autoIncrement] => [unsigned] => @@ -16,7 +16,7 @@ ( [type] => text [length] => 2 - [notNull] => 1 + [notNull] => [default] => [autoIncrement] => [unsigned] => @@ -26,7 +26,7 @@ ( [type] => text [length] => 50 - [notNull] => 1 + [notNull] => [default] => [autoIncrement] => [unsigned] => @@ -46,7 +46,7 @@ ( [type] => integer [length] => 0 - [notNull] => 1 + [notNull] => [default] => 0 [autoIncrement] => [unsigned] => @@ -57,7 +57,7 @@ [type] => integer [length] => 0 [notNull] => 1 - [default] => 0 + [default] => [autoIncrement] => 1 [unsigned] => ) /home/dotxp/dev/PHP/actual/ezcomponents/trunk/DatabaseSchema/tests/generic_test.php:293 6) testDatatypes(ezcDatabaseSchemaSqliteTest) Failed asserting that two strings are equal. --- Expected +++ Actual @@ -9,8 +9,8 @@ test_boolean - boolean - true + integer + 1 test_clob /home/dotxp/dev/PHP/actual/ezcomponents/trunk/DatabaseSchema/tests/generic_test.php:338 7) testApply1(ezcDatabaseSchemaSqliteDiffTest) Failed asserting that two objects are equal. --- Expected +++ Actual @@ -55,7 +55,7 @@ [type] => integer [length] => 0 [notNull] => 1 - [default] => + [default] => 0 [autoIncrement] => [unsigned] => ) /home/dotxp/dev/PHP/actual/ezcomponents/trunk/DatabaseSchema/tests/generic_diff_test.php:196 FAILURES! Tests: 104, Failures: 7. Generating code coverage report, this may take a moment.