- 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'."
         );