You may close the ticket! What is the expected release date of Geotools 2.4.0
?

Enam


Jody Garnett wrote:
> 
> Simboss just did it. For bonous points we can see if he updated the bug 
> with a comment :-D
> Cheers,
> Jody
>> Thanks for the quick work. Let me know when the patch is applied 2.3.x
>> branch. 
>>
>> Regards,
>> Enam
>>
>>
>> Jody Garnett wrote:
>>   
>>> Nice thank you this is great!
>>>
>>> Let's create a bug report and then apply your fix :-) Thanks so much for 
>>> the research etc...
>>> I have some time as I wait for a GeoTools build to finish so I will 
>>> create the bug report for you ...
>>> - http://jira.codehaus.org/browse/GEOT-1348
>>>
>>> I have applied your fix on trunk, if you like it we can ask that it be 
>>> applied to 2.3.x as well. The revision number of
>>> the commit is marked on the bug report, the bug report will be marked 
>>> resolved until you confirm you
>>> are happy etc...
>>>
>>> As long as you have the ability to test - the following bug looks to be 
>>> related:
>>> - http://jira.codehaus.org/browse/GEOT-1061
>>>
>>> Andrea I do not have a 2.3.x checkout here at work - can you apply this 
>>> fix to 2.3.x please?
>>> Jody
>>>     
>>>> This happens when the schema defines an attribute without the length of
>>>> the field :
>>>>
>>>> AttributeType cgi =
>>>> AttributeTypeFactory.newAttributeType("propertyName",
>>>> String.class);
>>>>
>>>> This goes away when we set the length to less than 10485760 using
>>>>
>>>> AttributeType cgi =
>>>> AttributeTypeFactory.newAttributeType("propertyName",
>>>> String.class, true, 30);
>>>>
>>>> I tried the generated sql statement and the same error is thrown. Here
>>>> is
>>>> the error :
>>>>
>>>> ERROR: length for type varchar cannot exceed 10485760
>>>> SQL state: 22023
>>>>
>>>> It seems like when generating the sql, the max value for VARCHAR comes
>>>> up
>>>> to be MAX_INT. However, postgresql requires it to be less than or equal
>>>> to 10485760. From what I understand from the code in
>>>> PostgisDataStore.java, the createSchema method should do a check for
>>>> this
>>>> case:
>>>>
>>>> if (length < 1) {
>>>>       LOGGER.warning("FeatureType did not specify string length;
>>>> defaulted to 256");
>>>>       length = 256;
>>>> }
>>>> else if (length > MAX_ALLOWED_VALUE) // this is the check that I think
>>>> should be added and MAX_ALLOWED_VALUE should be set to 10485760
>>>> {
>>>>       length = MAX_ALLOWED_VALUE;
>>>> }
>>>>
>>>> The complete method follows :
>>>>
>>>> private StringBuffer makeSqlCreate(AttributeType[] attributeType)
>>>>         throws IOException {
>>>>         StringBuffer buf = new StringBuffer("");
>>>>
>>>>         for (int i = 0; i < attributeType.length; i++) {
>>>>             String typeName = null;
>>>>             typeName = (String)
>>>> CLASS_MAPPINGS.get(attributeType[i].getType());
>>>>             if (typeName == null)
>>>>                 typeName = (String)
>>>> GEOM_CLASS_MAPPINGS.get(attributeType[i].getType());
>>>>
>>>>             if (typeName != null) {
>>>>                 if (attributeType[i] instanceof GeometryAttributeType)
>>>> {
>>>>                     typeName = "GEOMETRY";
>>>>                 } else if (typeName.equals("VARCHAR")) {
>>>>                         int length = -1;
>>>>                         Filter f = attributeType[i].getRestriction();
>>>>                         if(f !=null && f!=Filter.ALL && f !=
>>>> Filter.NONE
>>>> && (f.getFilterType() == FilterType.COMPARE_LESS_THAN ||
>>>> f.getFilterType() == FilterType.COMPARE_LESS_THAN_EQUAL)){
>>>>                                 try{
>>>>                                 CompareFilter cf = (CompareFilter)f;
>>>>                                 if(cf.getLeftValue() instanceof
>>>> LengthFunction){
>>>>                                         length =
>>>> Integer.parseInt(((LiteralExpression)cf.getRightValue()).getLiteral().toString());
>>>>                                 }else{
>>>>                                         if(cf.getRightValue()
>>>> instanceof
>>>> LengthFunction){
>>>>                                         length =
>>>> Integer.parseInt(((LiteralExpression)cf.getLeftValue()).getLiteral().toString());
>>>>                                 }
>>>>                                 }
>>>>                                 }catch(NumberFormatException e){
>>>>                                         length = 256;
>>>>                                 }
>>>>                         }else{
>>>>                                 length = 256;
>>>>                         }
>>>>
>>>>                         if (length < 1) {
>>>>                                 LOGGER.warning("FeatureType did not
>>>> specify string length; defaulted to 256");
>>>>                                 length = 256;
>>>>                         }
>>>>                   else if (length > MAX_ALLOWED_VALUE)
>>>>                   {
>>>>                         length = MAX_ALLOWED_VALUE;
>>>>                   }
>>>>
>>>>                     typeName = typeName + "(" + length + ")";
>>>>                 }
>>>>
>>>>                 if (!attributeType[i].isNillable()) {
>>>>                     typeName = typeName + " NOT NULL";
>>>>                 }
>>>>
>>>>                 //TODO review!!! Is toString() always OK???
>>>>                 Object defaultValue =
>>>> attributeType[i].createDefaultValue();
>>>>
>>>>                 if (defaultValue != null) {
>>>>                     typeName = typeName + " DEFAULT '"
>>>>                         + defaultValue.toString() + "'";
>>>>                 }
>>>>
>>>>                 buf.append(" \"" + attributeType[i].getName() + "\" " +
>>>> typeName + ",");
>>>>
>>>>             } else {
>>>>                 String msg;
>>>>                 if (attributeType[i] == null) {
>>>>                         msg = "AttributeType was null!";
>>>>                 } else {
>>>>                         msg = "Type '" + attributeType[i].getType() +
>>>> "'
>>>> not supported!";
>>>>                 }
>>>>                 throw (new IOException(msg));
>>>>             }
>>>>         }
>>>>
>>>>         return buf.deleteCharAt(buf.length()-1);
>>>>     }
>>>>
>>>> Regards,
>>>> Enamul Haque
>>>> R & D, Redknee Inc.
>>>>
>>>> -----Original Message-----
>>>> From: Jody Garnett [mailto:[EMAIL PROTECTED]
>>>> Sent: Tuesday, June 19, 2007 3:44 PM
>>>> To: Enamul Haque
>>>> Cc: [email protected]
>>>> Subject: Re: [Geotools-gt2-users] Postgis DataStore
>>>>
>>>> Enam wrote:
>>>>   
>>>>       
>>>>> Not sure if this has been posted before. I'm getting an exception when
>>>>> calling createSchema() :
>>>>>
>>>>> It seems like any attribute of type string uses VARCHAR(2147483647).
>>>>> Am
>>>>> I
>>>>> doing something wrong here ?
>>>>>
>>>>>     
>>>>>         
>>>> Sounds like we are doing something wrong? Can you do some research and
>>>> let us know what we are supposed to be using to represent String? When
>>>> I
>>>> first saw your message I wondered if the createSchema statement was
>>>> resulting in an SQL request that was too long.
>>>>
>>>> You can always try doing the same SQL as create schema generates by
>>>> hand
>>>> while you experiment...
>>>> Cheers,
>>>> Jody
>>>>   
>>>>       
>>> -------------------------------------------------------------------------
>>> This SF.net email is sponsored by DB2 Express
>>> Download DB2 Express C - the FREE version of DB2 express and take
>>> control of your XML. No limits. Just data. Click to get it now.
>>> http://sourceforge.net/powerbar/db2/
>>> _______________________________________________
>>> Geotools-gt2-users mailing list
>>> [email protected]
>>> https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users
>>>
>>>
>>>     
>>
>>   
> 
> 
> -------------------------------------------------------------------------
> This SF.net email is sponsored by DB2 Express
> Download DB2 Express C - the FREE version of DB2 express and take
> control of your XML. No limits. Just data. Click to get it now.
> http://sourceforge.net/powerbar/db2/
> _______________________________________________
> Geotools-gt2-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Postgis-DataStore-tf3944630.html#a11334157
Sent from the geotools-gt2-users mailing list archive at Nabble.com.


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Geotools-gt2-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users

Reply via email to