hi Guillermo,

you are right, I didn't use rawValues , and that was the problem.
The problem is not with Glorp but with opendbx and in fact it is the same as 
the issue pointed to by Mariano (issue 10) and another (issue 16)
I have a simpler test to reproduce than yours (in fact you don't need to use 
UNION in your test):

 | settings dbc stmt resultSet coll |
 settings := DBXConnectionSettings
    host: SmalltalkImage current imagePath, '/'
    port: ''
    database:  'testdb.dat'
    userName: ''
    userPassword: ''.
 dbc := DBXConnection platform: DBXSqlitePlatform  new settings: settings.
 [
 dbc connect.
 dbc open.
 dbc execute: 'drop table if exists foo'.
 dbc execute: 'create table foo (id int not null, name varchar(64) null )'.
 dbc execute: 'insert into foo values(1,  null  )'.
 dbc execute: 'insert into foo values(2, ''riptobe'' )'.
 resultSet  := dbc execute: 'SELECT * FROM foo'.
 coll := OrderedCollection new.
"error here for null value in second row"
 resultSet rows do: [ :r | coll add: r values ].
 coll inspect.
 ] ensure: [ dbc close ].

The problem is that opendbx doesn't return the correct datatype for columns 
when they have null values, apparently it keeps the description for the column 
that was readen for the first row (?)
And the same problem exists with MSSQL, it is not related to the special sqlite 
UNKNOW datatype but a problem in opendbx (my test also breaks with mssql)
I am writing a test case for that, and I will also have a look at opendbx 
source code.
 Cheers
Alain
  "Guillermo Polito" <[email protected]> a écrit dans le message de 
news: CAOBmb52JNRM+xQBx9kqNm9aMero3avyriXWsytbMqK=jbh8...@mail.gmail.com...
  Hi Alain!

  where did you get GlorpDBX? :)  Was it from the DBXTalk repo?



  On Thu, Aug 11, 2011 at 5:28 PM, Alain Rastoul <[email protected]> wrote:

    Hi Mariano

    I may be wrong, but I don't think that this issue is not related, I have 
first checked that reading my data with squeakdbx is ok.

  How did you read the data?  Using values or raw values?

  Can you send us/me the query sent by glorp?  Is it a polymorphic or 
inheritance query?
   

  Thanks!
  Guille


    After searching a bit I think that the problem is in Glorp in

    DBXPlatform>>createDataTypesMap
     "Creates and returns a map that maps Smalltalk classes to SQL datatypes.
     The 16r means it is hexadecimal."
     ^Dictionary new
    ...
      at: 16rFF put: (DBXTypeNotSupported type: #UNKNOWN);

    Perhaps a solution would be I think it should be something like
    at: 16rFF put: (DBXTypeNotSupported type: UndefinedObject);

    with a fromDbxString method defined in UndefinedObject.
    fromDbxString: aString
        ^ convert the string to the true column datatype

    The problem here is that there should be a conversion from the string to 
the column datatype and the column datatype is unknown here...
    I don't know either if it is possible to get it from squeakdbx at this 
point (while fetching data) ?


      "Mariano Martinez Peck" <[email protected]> a écrit dans le message 
de 
news:CAA+-=mWQ8y4zLdQbhDx3-hBPXUF_-S9wtvVOD8ia+=6tc8-ufg-jsoawuisxosn+bqq9rb...@public.gmane.org...



      On Thu, Aug 11, 2011 at 10:02 PM, Alain Rastoul <[email protected]> wrote:

        Hi

        I 'm writing a small app with pharo +seaside + glorp + squeakdbx + 
sqlite and I have a problem reading null values from my database.


      Hi Alain. Do you know exactly which query is being sent?   Do you think 
it can be related to this: http://code.google.com/p/dbxtalk/issues/detail?id=10 
 ?

       
        It seems that glorp stores a DbxTypeNotSupported in the column 
description for null values when the first row has a null value (the column 
datatype is varchar).
        Any workaround or advice is welcome before I dig into Glorp code
        TIA

        Alain 






      -- 
      Mariano
      http://marianopeck.wordpress.com



Reply via email to