Index: kernel/class/edit.php
===================================================================
--- kernel/class/edit.php	(revision 22635)
+++ kernel/class/edit.php	(working copy)
@@ -667,7 +667,7 @@
             $class->storeDefined( $attributes );
 
             // Add object attributes which have been added.
-            foreach ( $newClassAttributes as $newClassAttribute )
+            foreach ( $attributes as $newClassAttribute )
             {
                 $attributeExist = false;
                 $newClassAttributeID = $newClassAttribute->attribute( 'id' );
@@ -679,25 +679,57 @@
                 }
                 if ( !$attributeExist )
                 {
-                    if ( $objects == null )
+                    $dataType = $newClassAttribute->attribute( 'data_type' );
+                    if ( $dataType->supportsBatchInitializeObjectAttribute() )
                     {
-                        $objects = eZContentObject::fetchSameClassList( $ClassID );
+                        $db = eZDB::instance();
+
+                        $data = array( 'contentobject_id'         => 'a.contentobject_id',
+                                       'version'                  => 'a.version',
+                                       'contentclassattribute_id' => $newClassAttributeID,
+                                       'data_type_string'         => "'" . $db->escapeString( $newClassAttribute->attribute( 'data_type_string' ) ) . "'",
+                                       'language_code'            => 'a.language_code',
+                                       'language_id'              => 'MAX(a.language_id)' );
+
+                        $datatypeData = $dataType->batchInitializeObjectAttributeData( $newClassAttribute );
+                        $data = array_merge( $data, $datatypeData );
+
+                        $cols = implode( ', ', array_keys( $data ) );
+                        $values = implode( ', ', $data );
+
+                        $sql = "INSERT INTO ezcontentobject_attribute( $cols )
+                        SELECT $values
+                        FROM ezcontentobject_attribute a, ezcontentobject o
+                        WHERE o.id = a.contentobject_id AND
+                              o.contentclass_id=$ClassID
+                        GROUP BY contentobject_id,
+                                 version,
+                                 language_code";
+
+                        $db->query( $sql );
                     }
-                    foreach ( $objects as $object )
+                    else
                     {
-                        $contentobjectID = $object->attribute( 'id' );
-                        $objectVersions = $object->versions();
-                        foreach ( $objectVersions as $objectVersion )
+                        if ( $objects == null )
                         {
-                            $translations = $objectVersion->translations( false );
-                            $version = $objectVersion->attribute( 'version' );
-                            foreach ( $translations as $translation )
+                            $objects = eZContentObject::fetchSameClassList( $ClassID );
+                        }
+                        foreach ( $objects as $object )
+                        {
+                            $contentobjectID = $object->attribute( 'id' );
+                            $objectVersions = $object->versions();
+                            foreach ( $objectVersions as $objectVersion )
                             {
-                                $objectAttribute = eZContentObjectAttribute::create( $newClassAttributeID, $contentobjectID, $version, $translation );
-                                $objectAttribute->setAttribute( 'language_code', $translation );
-                                $objectAttribute->initialize();
-                                $objectAttribute->store();
-                                $objectAttribute->postInitialize();
+                                $translations = $objectVersion->translations( false );
+                                $version = $objectVersion->attribute( 'version' );
+                                foreach ( $translations as $translation )
+                                {
+                                    $objectAttribute = eZContentObjectAttribute::create( $newClassAttributeID, $contentobjectID, $version, $translation );
+                                    $objectAttribute->setAttribute( 'language_code', $translation );
+                                    $objectAttribute->initialize();
+                                    $objectAttribute->store();
+                                    $objectAttribute->postInitialize();
+                                }
                             }
                         }
                     }
Index: kernel/classes/datatypes/ezauthor/ezauthortype.php
===================================================================
--- kernel/classes/datatypes/ezauthor/ezauthortype.php	(revision 22635)
+++ kernel/classes/datatypes/ezauthor/ezauthortype.php	(working copy)
@@ -337,6 +337,10 @@
         $objectAttribute->setAttribute( 'data_text', $xmlString );
     }
 
+    function supportsBatchInitializeObjectAttribute()
+    {
+        return true;
+    }
 }
 
 eZDataType::register( eZAuthorType::DATA_TYPE_STRING, "eZAuthorType" );
Index: kernel/classes/datatypes/ezbinaryfile/ezbinaryfiletype.php
===================================================================
--- kernel/classes/datatypes/ezbinaryfile/ezbinaryfiletype.php	(revision 22635)
+++ kernel/classes/datatypes/ezbinaryfile/ezbinaryfiletype.php	(working copy)
@@ -722,6 +722,10 @@
         $fileHandler->fileStore( $destinationPath . $basename, 'binaryfile', true );
     }
 
+    function supportsBatchInitializeObjectAttribute()
+    {
+        return true;
+    }
 }
 
 eZDataType::register( eZBinaryFileType::DATA_TYPE_STRING, "eZBinaryFileType" );
Index: kernel/classes/datatypes/ezboolean/ezbooleantype.php
===================================================================
--- kernel/classes/datatypes/ezboolean/ezbooleantype.php	(revision 22635)
+++ kernel/classes/datatypes/ezboolean/ezbooleantype.php	(working copy)
@@ -272,6 +272,18 @@
         $defaultValue = strtolower( $attributeParametersNode->getElementsByTagName( 'default-value' )->item( 0 )->getAttribute( 'is-set' ) ) == 'true';
         $classAttribute->setAttribute( 'data_int3', $defaultValue );
     }
+
+    function supportsBatchInitializeObjectAttribute()
+    {
+        return true;
+    }
+
+    function batchInitializeObjectAttributeData( $classAttribute )
+    {
+        $default = $classAttribute->attribute( "data_int3" );
+        return array( 'data_int'     => $default,
+                      'sort_key_int' => $default );
+    }
 }
 
 eZDataType::register( eZBooleanType::DATA_TYPE_STRING, "eZBooleanType" );
Index: kernel/classes/datatypes/ezcountry/ezcountrytype.php
===================================================================
--- kernel/classes/datatypes/ezcountry/ezcountrytype.php	(revision 22635)
+++ kernel/classes/datatypes/ezcountry/ezcountrytype.php	(working copy)
@@ -494,6 +494,11 @@
     {
         return null;
     }
+
+    function supportsBatchInitializeObjectAttribute()
+    {
+        return true;
+    }
 }
 
 eZDataType::register( eZCountryType::DATA_TYPE_STRING, 'ezcountrytype' );
Index: kernel/classes/datatypes/ezdate/ezdatetype.php
===================================================================
--- kernel/classes/datatypes/ezdate/ezdatetype.php	(revision 22635)
+++ kernel/classes/datatypes/ezdate/ezdatetype.php	(working copy)
@@ -398,6 +398,26 @@
             $objectAttribute->setAttribute( 'data_int', $timestamp );
         }
     }
+
+    function supportsBatchInitializeObjectAttribute()
+    {
+        return true;
+    }
+
+    function batchInitializeObjectAttributeData( $classAttribute )
+    {
+        $defaultType = $classAttribute->attribute( self::DEFAULT_FIELD );
+        if ( $defaultType == 1 )
+        {
+            $default = time();
+            return array( 'data_int'     => $default,
+                          'sort_key_int' => $default );
+        }
+        else
+        {
+            return array();
+        }
+    }
 }
 
 eZDataType::register( eZDateType::DATA_TYPE_STRING, "eZDateType" );
Index: kernel/classes/datatypes/ezdatetime/ezdatetimetype.php
===================================================================
--- kernel/classes/datatypes/ezdatetime/ezdatetimetype.php	(revision 22635)
+++ kernel/classes/datatypes/ezdatetime/ezdatetimetype.php	(working copy)
@@ -627,6 +627,41 @@
             $objectAttribute->setAttribute( 'data_int', $timestamp );
         }
     }
+
+    function supportsBatchInitializeObjectAttribute()
+    {
+        return true;
+    }
+
+    function batchInitializeObjectAttributeData( $classAttribute )
+    {
+        $defaultType = $classAttribute->attribute( self::DEFAULT_FIELD );
+
+        switch( $defaultType )
+        {
+            case self::DEFAULT_CURRENT_DATE:
+            {
+                $default = time();
+            } break;
+
+            case self::DEFAULT_ADJUSTMENT:
+            {
+                $adjustments = self::classAttributeContent( $classAttribute );
+                $value = new eZDateTime();
+                $secondAdjustment = $classAttribute->attribute( self::USE_SECONDS_FIELD ) == 1 ? $adjustments['second'] : 0;
+                $value->adjustDateTime( $adjustments['hour'], $adjustments['minute'], $secondAdjustment, $adjustments['month'], $adjustments['day'], $adjustments['year'] );
+
+                $default = $value->timeStamp();
+            } break;
+
+            default:
+            {
+                $default = 0;
+            }
+        }
+
+        return array( 'data_int' => $default, 'sort_key_int' => $default );
+    }
 }
 
 eZDataType::register( eZDateTimeType::DATA_TYPE_STRING, "eZDateTimeType" );
Index: kernel/classes/datatypes/ezemail/ezemailtype.php
===================================================================
--- kernel/classes/datatypes/ezemail/ezemailtype.php	(revision 22635)
+++ kernel/classes/datatypes/ezemail/ezemailtype.php	(working copy)
@@ -244,6 +244,11 @@
     {
         return 'string';
     }
+
+    function supportsBatchInitializeObjectAttribute()
+    {
+        return true;
+    }
 }
 
 eZDataType::register( eZEmailType::DATA_TYPE_STRING, "eZEmailType" );
Index: kernel/classes/datatypes/ezfloat/ezfloattype.php
===================================================================
--- kernel/classes/datatypes/ezfloat/ezfloattype.php	(revision 22635)
+++ kernel/classes/datatypes/ezfloat/ezfloattype.php	(working copy)
@@ -412,6 +412,22 @@
         $classAttribute->setAttribute( self::INPUT_STATE_FIELD, $minMaxState );
     }
 
+    function supportsBatchInitializeObjectAttribute()
+    {
+        return true;
+    }
+
+    function batchInitializeObjectAttributeData( $classAttribute )
+    {
+        $default = $classAttribute->attribute( 'data_float3' );
+        if ( $default !== 0 )
+        {
+            return array( 'data_float' => $default );
+        }
+
+        return array();
+    }
+
     /// \privatesection
     /// The float value validator
     public $FloatValidator;
Index: kernel/classes/datatypes/ezimage/ezimagetype.php
===================================================================
--- kernel/classes/datatypes/ezimage/ezimagetype.php	(revision 22635)
+++ kernel/classes/datatypes/ezimage/ezimagetype.php	(working copy)
@@ -528,6 +528,10 @@
         return true;
     }
 
+    function supportsBatchInitializeObjectAttribute()
+    {
+        return true;
+    }
 }
 
 eZDataType::register( eZImageType::DATA_TYPE_STRING, "eZImageType" );
Index: kernel/classes/datatypes/ezinteger/ezintegertype.php
===================================================================
--- kernel/classes/datatypes/ezinteger/ezintegertype.php	(revision 22635)
+++ kernel/classes/datatypes/ezinteger/ezintegertype.php	(working copy)
@@ -515,6 +515,25 @@
         $classAttribute->setAttribute( self::INPUT_STATE_FIELD, $minMaxState );
     }
 
+    function batchInitializeObjectAttributeData( $classAttribute )
+    {
+        $default = $classAttribute->attribute( "data_int3" );
+        if ( $default === 0 )
+        {
+            return array();
+        }
+        else
+        {
+            return array( 'data_int'     => $default,
+                          'sort_key_int' => $default );
+        }
+    }
+
+    function supportsBatchInitializeObjectAttribute()
+    {
+        return true;
+    }
+
     /// \privatesection
     /// The integer value validator
     public $IntegerValidator;
Index: kernel/classes/datatypes/ezisbn/ezisbntype.php
===================================================================
--- kernel/classes/datatypes/ezisbn/ezisbntype.php	(revision 22635)
+++ kernel/classes/datatypes/ezisbn/ezisbntype.php	(working copy)
@@ -456,6 +456,11 @@
         eZISBNRegistrantRange::cleanAll();
         return true;
     }
+
+    function supportsBatchInitializeObjectAttribute()
+    {
+        return true;
+    }
 }
 
 eZDataType::register( eZISBNType::DATA_TYPE_STRING, "eZISBNType" );
Index: kernel/classes/datatypes/ezkeyword/ezkeywordtype.php
===================================================================
--- kernel/classes/datatypes/ezkeyword/ezkeywordtype.php	(revision 22635)
+++ kernel/classes/datatypes/ezkeyword/ezkeywordtype.php	(working copy)
@@ -328,6 +328,11 @@
         $keyword->initializeKeyword( $keyWordString );
         $objectAttribute->setContent( $keyword );
     }
+
+    function supportsBatchInitializeObjectAttribute()
+    {
+        return true;
+    }
 }
 
 eZDataType::register( eZKeywordType::DATA_TYPE_STRING, 'eZKeywordType' );
Index: kernel/classes/datatypes/ezmatrix/ezmatrixtype.php
===================================================================
--- kernel/classes/datatypes/ezmatrix/ezmatrixtype.php	(revision 22635)
+++ kernel/classes/datatypes/ezmatrix/ezmatrixtype.php	(working copy)
@@ -544,6 +544,18 @@
         $xmlString = $rootNode ? $rootNode->ownerDocument->saveXML( $rootNode ) : '';
         $objectAttribute->setAttribute( 'data_text', $xmlString );
     }
+
+    function supportsBatchInitializeObjectAttribute()
+    {
+        return true;
+    }
+
+    function batchInitializeObjectAttributeData( $classAttribute )
+    {
+        $numRows = $classAttribute->attribute( 'data_int1' );
+        $matrix = new eZMatrix( '', $numRows, $classAttribute->attribute( 'content' ) );
+        return array( 'data_text' => $matrix->xmlString() );
+    }
 }
 
 eZDataType::register( eZMatrixType::DATA_TYPE_STRING, 'ezmatrixtype' );
Index: kernel/classes/datatypes/ezmedia/ezmediatype.php
===================================================================
--- kernel/classes/datatypes/ezmedia/ezmediatype.php	(revision 22635)
+++ kernel/classes/datatypes/ezmedia/ezmediatype.php	(working copy)
@@ -800,6 +800,11 @@
 
         $mediaFile->store();
     }
+
+    function supportsBatchInitializeObjectAttribute()
+    {
+        return true;
+    }
 }
 
 eZDataType::register( eZMediaType::DATA_TYPE_STRING, "eZMediaType" );
Index: kernel/classes/datatypes/ezmultioption2/ezmultioption2type.php
===================================================================
--- kernel/classes/datatypes/ezmultioption2/ezmultioption2type.php	(revision 22635)
+++ kernel/classes/datatypes/ezmultioption2/ezmultioption2type.php	(working copy)
@@ -698,6 +698,16 @@
         return $this->DataTypeString;
     }
 
+    function supportsBatchInitializeObjectAttribute()
+    {
+        return true;
+    }
+
+    function batchInitializeObjectAttributeData( $classAttribute )
+    {
+        $optionGroup = new eZMultiOption2( $classAttribute->attribute( 'data_text1' ) );
+        return array( 'data_text' => $optionGroup->xmlString() );
+    }
 }
 
 eZDataType::register( eZMultiOption2Type::DATA_TYPE_STRING, "eZMultiOption2Type" );
Index: kernel/classes/datatypes/ezmultiprice/ezmultipricetype.php
===================================================================
--- kernel/classes/datatypes/ezmultiprice/ezmultipricetype.php	(revision 22635)
+++ kernel/classes/datatypes/ezmultiprice/ezmultipricetype.php	(working copy)
@@ -538,6 +538,11 @@
     {
         return null;
     }
+
+    function supportsBatchInitializeObjectAttribute()
+    {
+        return true;
+    }
 }
 
 eZDataType::register( eZMultiPriceType::DATA_TYPE_STRING, "eZMultiPriceType" );
Index: kernel/classes/datatypes/ezobjectrelation/ezobjectrelationtype.php
===================================================================
--- kernel/classes/datatypes/ezobjectrelation/ezobjectrelationtype.php	(revision 22635)
+++ kernel/classes/datatypes/ezobjectrelation/ezobjectrelationtype.php	(working copy)
@@ -659,6 +659,11 @@
         return true;
     }
 
+    function supportsBatchInitializeObjectAttribute()
+    {
+        return true;
+    }
+
     /// \privatesection
 }
 
Index: kernel/classes/datatypes/ezobjectrelationlist/ezobjectrelationlisttype.php
===================================================================
--- kernel/classes/datatypes/ezobjectrelationlist/ezobjectrelationlisttype.php	(revision 22635)
+++ kernel/classes/datatypes/ezobjectrelationlist/ezobjectrelationlisttype.php	(working copy)
@@ -1816,6 +1816,11 @@
         return $return;
     }
 
+    function supportsBatchInitializeObjectAttribute()
+    {
+        return true;
+    }
+
     /// \privatesection
 }
 
Index: kernel/classes/datatypes/ezoption/ezoptiontype.php
===================================================================
--- kernel/classes/datatypes/ezoption/ezoptiontype.php	(revision 22635)
+++ kernel/classes/datatypes/ezoption/ezoptiontype.php	(working copy)
@@ -468,6 +468,17 @@
     {
         return true;
     }
+
+    function supportsBatchInitializeObjectAttribute()
+    {
+        return true;
+    }
+
+    function batchInitializeObjectAttributeData( $classAttribute )
+    {
+        $option = new eZOption( $classAttribute->attribute( 'data_text1' ) );
+        return array( 'data_text' => $option->xmlString() );
+    }
 }
 
 eZDataType::register( eZOptionType::DATA_TYPE_STRING, "eZOptionType" );
Index: kernel/classes/datatypes/ezprice/ezpricetype.php
===================================================================
--- kernel/classes/datatypes/ezprice/ezpricetype.php	(revision 22635)
+++ kernel/classes/datatypes/ezprice/ezpricetype.php	(working copy)
@@ -329,6 +329,11 @@
         }
         $classAttribute->setAttribute( self::VAT_ID_FIELD, $vatID );
     }
+
+    function supportsBatchInitializeObjectAttribute()
+    {
+        return true;
+    }
 }
 
 eZDataType::register( eZPriceType::DATA_TYPE_STRING, "eZPriceType" );
Index: kernel/classes/datatypes/ezproductcategory/ezproductcategorytype.php
===================================================================
--- kernel/classes/datatypes/ezproductcategory/ezproductcategorytype.php	(revision 22635)
+++ kernel/classes/datatypes/ezproductcategory/ezproductcategorytype.php	(working copy)
@@ -236,6 +236,17 @@
     {
         return null;
     }
+
+    function supportsBatchInitializeObjectAttribute()
+    {
+        return true;
+    }
+
+    function batchInitializeObjectAttributeData( $classAttribute )
+    {
+        $default = 0;
+        return array( 'data_int' => $default, 'sort_key_int' => $default );
+    }
 }
 
 eZDataType::register( eZProductCategoryType::DATA_TYPE_STRING, "eZProductCategoryType" );
Index: kernel/classes/datatypes/ezrangeoption/ezrangeoptiontype.php
===================================================================
--- kernel/classes/datatypes/ezrangeoption/ezrangeoptiontype.php	(revision 22635)
+++ kernel/classes/datatypes/ezrangeoption/ezrangeoptiontype.php	(working copy)
@@ -288,6 +288,17 @@
         $xmlString = $rootNode ? $rootNode->ownerDocument->saveXML( $rootNode ) : '';
         $objectAttribute->setAttribute( 'data_text', $xmlString );
     }
+
+    function supportsBatchInitializeObjectAttribute()
+    {
+        return true;
+    }
+
+    function batchInitializeObjectAttributeData( $classAttribute )
+    {
+        $option = new eZRangeOption( $classAttribute->attribute( 'data_text1' ) );
+        return array( 'data_text' => $option->xmlString() );
+    }
 }
 
 eZDataType::register( eZRangeOptionType::DATA_TYPE_STRING, "eZRangeOptionType" );
Index: kernel/classes/datatypes/ezselection/ezselectiontype.php
===================================================================
--- kernel/classes/datatypes/ezselection/ezselectiontype.php	(revision 22635)
+++ kernel/classes/datatypes/ezselection/ezselectiontype.php	(working copy)
@@ -467,6 +467,11 @@
         else
             $classAttribute->setAttribute( 'data_int1', 1 );
     }
+
+    function supportsBatchInitializeObjectAttribute()
+    {
+        return true;
+    }
 }
 
 eZDataType::register( eZSelectionType::DATA_TYPE_STRING, "eZSelectionType" );
Index: kernel/classes/datatypes/ezstring/ezstringtype.php
===================================================================
--- kernel/classes/datatypes/ezstring/ezstringtype.php	(revision 22635)
+++ kernel/classes/datatypes/ezstring/ezstringtype.php	(working copy)
@@ -412,6 +412,24 @@
         return $diffObject;
     }
 
+    function supportsBatchInitializeObjectAttribute()
+    {
+        return true;
+    }
+
+    function batchInitializeObjectAttributeData( $classAttribute )
+    {
+        $default = $classAttribute->attribute( 'data_text1' );
+        if ( $default !== '' )
+        {
+            $trans = eZCharTransform::instance();
+            $lowerCasedDefault = $trans->transformByGroup( $default, 'lowercase' );
+            return array( 'data_text' => $default, 'sort_key_string' => $lowerCasedDefault );
+        }
+
+        return array();
+    }
+
     /// \privatesection
     /// The max len validator
     public $MaxLenValidator;
Index: kernel/classes/datatypes/eztext/eztexttype.php
===================================================================
--- kernel/classes/datatypes/eztext/eztexttype.php	(revision 22635)
+++ kernel/classes/datatypes/eztext/eztexttype.php	(working copy)
@@ -286,6 +286,10 @@
         return $diffObject;
     }
 
+    function supportsBatchInitializeObjectAttribute()
+    {
+        return true;
+    }
 }
 
 eZDataType::register( eZTextType::DATA_TYPE_STRING, "eZTextType" );
Index: kernel/classes/datatypes/eztime/eztimetype.php
===================================================================
--- kernel/classes/datatypes/eztime/eztimetype.php	(revision 22635)
+++ kernel/classes/datatypes/eztime/eztimetype.php	(working copy)
@@ -459,6 +459,25 @@
             $objectAttribute->setAttribute( 'data_int', $timeOfDay );
         }
     }
+
+    function supportsBatchInitializeObjectAttribute()
+    {
+        return true;
+    }
+
+    function batchInitializeObjectAttributeData( $classAttribute )
+    {
+        $defaultType = $classAttribute->attribute( self::DEFAULT_FIELD );
+
+        if ( $defaultType == 1 )
+        {
+            $time = new eZTime();
+            $default = $time->timeOfDay();
+            return array( 'data_int' => $default, 'sort_key_int' => $default );
+        }
+
+        return array();
+    }
 }
 
 eZDataType::register( eZTimeType::DATA_TYPE_STRING, "eZTimeType" );
Index: kernel/classes/datatypes/ezurl/ezurltype.php
===================================================================
--- kernel/classes/datatypes/ezurl/ezurltype.php	(revision 22635)
+++ kernel/classes/datatypes/ezurl/ezurltype.php	(working copy)
@@ -382,6 +382,11 @@
         if ( $textNode )
             $objectAttribute->setAttribute( 'data_text', $textNode->textContent );
     }
+
+    function supportsBatchInitializeObjectAttribute()
+    {
+        return true;
+    }
 }
 
 eZDataType::register( eZURLType::DATA_TYPE_STRING, 'eZURLType' );
Index: kernel/classes/datatypes/ezxmltext/ezxmltexttype.php
===================================================================
--- kernel/classes/datatypes/ezxmltext/ezxmltexttype.php	(revision 22635)
+++ kernel/classes/datatypes/ezxmltext/ezxmltexttype.php	(working copy)
@@ -838,6 +838,18 @@
         return $diffObject;
     }
 
+    function supportsBatchInitializeObjectAttribute()
+    {
+        return true;
+    }
+
+    function batchInitializeObjectAttributeData( $classAttribute )
+    {
+        $parser = new eZXMLInputParser();
+        $doc = $parser->createRootNode();
+        $xmlText = eZXMLTextType::domString( $doc );
+        return array( 'data_text' => $xmlText );
+    }
 }
 
 eZDataType::register( eZXMLTextType::DATA_TYPE_STRING, "eZXMLTextType" );
Index: kernel/classes/ezdatatype.php
===================================================================
--- kernel/classes/ezdatatype.php	(revision 22635)
+++ kernel/classes/ezdatatype.php	(working copy)
@@ -1391,6 +1391,16 @@
         return true;
     }
 
+    function batchInitializeObjectAttributeData( $classAttribute )
+    {
+        return array();
+    }
+
+    function supportsBatchInitializeObjectAttribute()
+    {
+        return false;
+    }
+
     /// \privatesection
     /// The datatype string ID, used for uniquely identifying a datatype
     public $DataTypeString;
