- Fixed #16035: DatabaseSchema component automatically sorts table fields
alphabetically
git-svn-id: https://svn.apache.org/repos/asf/incubator/zetacomponents/trunk@978712 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/DatabaseSchema/ChangeLog b/DatabaseSchema/ChangeLog
index e2241f8..55fe0ea 100644
--- a/DatabaseSchema/ChangeLog
+++ b/DatabaseSchema/ChangeLog
@@ -1,6 +1,8 @@
1.4.4 - [REALESEDATE]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+- Fixed #16035: DatabaseSchema component automatically sorts table fields
+ alphabetically
- Fixed #15894: ezcDbSchemaIndex sorts fields by name, but field order is
important in indexes!
- Fixed #15892: XML Storage for Schema casts Integer defaults to string and
diff --git a/DatabaseSchema/src/structs/table.php b/DatabaseSchema/src/structs/table.php
index e32eb75..4bf0685 100644
--- a/DatabaseSchema/src/structs/table.php
+++ b/DatabaseSchema/src/structs/table.php
@@ -41,8 +41,6 @@
*/
function __construct( $fields, $indexes = array() )
{
- ksort( $fields );
- ksort( $indexes );
$this->fields = $fields;
$this->indexes = $indexes;
}
diff --git a/DatabaseSchema/tests/testfiles/persistent/ce_bad_word.php b/DatabaseSchema/tests/testfiles/persistent/ce_bad_word.php
index 82cd4b2..88e91d1 100644
--- a/DatabaseSchema/tests/testfiles/persistent/ce_bad_word.php
+++ b/DatabaseSchema/tests/testfiles/persistent/ce_bad_word.php
@@ -11,17 +11,17 @@
$def->properties['badword_id']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT;
-$def->properties['substitution'] = new ezcPersistentObjectProperty();
-$def->properties['substitution']->columnName = 'substitution';
-$def->properties['substitution']->propertyName = 'substitution';
-$def->properties['substitution']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_STRING;
-
-
$def->properties['word'] = new ezcPersistentObjectProperty();
$def->properties['word']->columnName = 'word';
$def->properties['word']->propertyName = 'word';
$def->properties['word']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_STRING;
+
+$def->properties['substitution'] = new ezcPersistentObjectProperty();
+$def->properties['substitution']->columnName = 'substitution';
+$def->properties['substitution']->propertyName = 'substitution';
+$def->properties['substitution']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_STRING;
+
return $def;
?>
diff --git a/DatabaseSchema/tests/testfiles/persistent/ce_message_category_rel.php b/DatabaseSchema/tests/testfiles/persistent/ce_message_category_rel.php
index 6d18d9c..b2326e3 100644
--- a/DatabaseSchema/tests/testfiles/persistent/ce_message_category_rel.php
+++ b/DatabaseSchema/tests/testfiles/persistent/ce_message_category_rel.php
@@ -5,6 +5,12 @@
$def->table = 'ce_message_category_rel';
$def->class = 'ce_message_category_rel';
+$def->properties['message_id'] = new ezcPersistentObjectProperty();
+$def->properties['message_id']->columnName = 'message_id';
+$def->properties['message_id']->propertyName = 'message_id';
+$def->properties['message_id']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT;
+
+
$def->properties['category_id'] = new ezcPersistentObjectProperty();
$def->properties['category_id']->columnName = 'category_id';
$def->properties['category_id']->propertyName = 'category_id';
@@ -16,12 +22,6 @@
$def->properties['is_shadow']->propertyName = 'is_shadow';
$def->properties['is_shadow']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT;
-
-$def->properties['message_id'] = new ezcPersistentObjectProperty();
-$def->properties['message_id']->columnName = 'message_id';
-$def->properties['message_id']->propertyName = 'message_id';
-$def->properties['message_id']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT;
-
return $def;
?>
diff --git a/DatabaseSchema/tests/testfiles/persistent/liveuser_translations.php b/DatabaseSchema/tests/testfiles/persistent/liveuser_translations.php
index e3ee717..2207b1b 100644
--- a/DatabaseSchema/tests/testfiles/persistent/liveuser_translations.php
+++ b/DatabaseSchema/tests/testfiles/persistent/liveuser_translations.php
@@ -5,22 +5,10 @@
$def->table = 'liveuser_translations';
$def->class = 'liveuser_translations';
-$def->properties['description'] = new ezcPersistentObjectProperty();
-$def->properties['description']->columnName = 'description';
-$def->properties['description']->propertyName = 'description';
-$def->properties['description']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_STRING;
-
-
-$def->properties['language_id'] = new ezcPersistentObjectProperty();
-$def->properties['language_id']->columnName = 'language_id';
-$def->properties['language_id']->propertyName = 'language_id';
-$def->properties['language_id']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_STRING;
-
-
-$def->properties['name'] = new ezcPersistentObjectProperty();
-$def->properties['name']->columnName = 'name';
-$def->properties['name']->propertyName = 'name';
-$def->properties['name']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_STRING;
+$def->idProperty = new ezcPersistentObjectIdProperty();
+$def->idProperty->columnName = 'translation_id';
+$def->idProperty->propertyName = 'translation_id';
+$def->idProperty->generator = new ezcPersistentGeneratorDefinition( 'ezcPersistentSequenceGenerator' );
$def->properties['section_id'] = new ezcPersistentObjectProperty();
@@ -35,10 +23,22 @@
$def->properties['section_type']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT;
-$def->idProperty = new ezcPersistentObjectIdProperty();
-$def->idProperty->columnName = 'translation_id';
-$def->idProperty->propertyName = 'translation_id';
-$def->idProperty->generator = new ezcPersistentGeneratorDefinition( 'ezcPersistentSequenceGenerator' );
+$def->properties['language_id'] = new ezcPersistentObjectProperty();
+$def->properties['language_id']->columnName = 'language_id';
+$def->properties['language_id']->propertyName = 'language_id';
+$def->properties['language_id']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_STRING;
+
+
+$def->properties['name'] = new ezcPersistentObjectProperty();
+$def->properties['name']->columnName = 'name';
+$def->properties['name']->propertyName = 'name';
+$def->properties['name']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_STRING;
+
+
+$def->properties['description'] = new ezcPersistentObjectProperty();
+$def->properties['description']->columnName = 'description';
+$def->properties['description']->propertyName = 'description';
+$def->properties['description']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_STRING;
return $def;
diff --git a/DatabaseSchema/tests/validator_test.php b/DatabaseSchema/tests/validator_test.php
index e4f2e17..0dbcaef 100644
--- a/DatabaseSchema/tests/validator_test.php
+++ b/DatabaseSchema/tests/validator_test.php
@@ -81,10 +81,10 @@
) );
$expected = array(
- "Field 'bugdb:booleanfield2' uses the unsupported type 'bool'.",
- "Field 'bugdb:decimalfield2' uses the unsupported type 'numeric'.",
- "Field 'bugdb:floatfield2' uses the unsupported type 'double'.",
"Field 'bugdb:integerfield2' uses the unsupported type 'int'.",
+ "Field 'bugdb:booleanfield2' uses the unsupported type 'bool'.",
+ "Field 'bugdb:floatfield2' uses the unsupported type 'double'.",
+ "Field 'bugdb:decimalfield2' uses the unsupported type 'numeric'.",
"Field 'bugdb:textfield2' uses the unsupported type 'char'.",
"Field 'bugdb:textfield3' uses the unsupported type 'varchar'."
);