>>>>> Glynn Clements <[EMAIL PROTECTED]> writes:

[...]

 > So, the problem arises because v.in.geonames tell v.in.ascii to use
 > varchar(4000) for the "alternatename" column, but once the table
 > has been created the SQLite driver reports the column as
 > varchar(255).

 > Essentially, db/drivers/sqlite/describe.c needs to do a better job
 > of parsing the result from sqlite3_column_decltype().

 > At present, it parses the decltype to an SQLite affinity type:

 > int aff = SQLITE_FLOAT;
  
 >      ...
  
 > if ( strstr(lc,"int") )
 > {
 >     aff = SQLITE_INTEGER;
 > }
 > else if ( strstr(lc,"char") || strstr(lc,"clob")
 >           || strstr(lc,"text") || strstr(lc,"date") )
 > {
 >     aff = SQLITE_TEXT;
 > }
 > else if ( strstr(lc,"blob") )
 > {
 >     aff = SQLITE_BLOB;
 > }

 > then converts the affinity type to a DBMI type.

 > [I'm not sure why the default is float.]

--cut: http://www.sqlite.org/datatype3.html--
2.1 Determination Of Column Affinity

   The type affinity of a column is determined by the declared type of
   the column, according to the following rules:
    1. If the datatype contains the string "INT" then it is assigned
       INTEGER affinity.
    2. If the datatype of the column contains any of the strings "CHAR",
       "CLOB", or "TEXT" then that column has TEXT affinity. Notice that
       the type VARCHAR contains the string "CHAR" and is thus assigned
       TEXT affinity.
    3. If the datatype for a column contains the string "BLOB" or if no
       datatype is specified then the column has affinity NONE.
    4. If the datatype for a column contains any of the strings "REAL",
       "FLOA", or "DOUB" then the column has REAL affinity
    5. Otherwise, the affinity is NUMERIC.
--cut: http://www.sqlite.org/datatype3.html--

 > What it should do (IMHO) is to parse the decltype directly to a
 > DBMI type (including parsing VARCHAR() types, to determine the
 > size). It should only use the affinity type if there is no decltype
 > (which occurs when a column in a SELECT statement is an expression
 > rather than a column reference).

        For the text data fields, it may make sense to report TEXT
        instead of the declared type (provided that the callers do
        support that type.)

[...]

_______________________________________________
grass-dev mailing list
grass-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-dev

Reply via email to