On Fri, Aug 12, 2011 at 9:39 PM, Alain Rastoul <[email protected]> wrote:
> ** > 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): > Hi Alain. First of all, thanks for poiting out the bug. Now, Guille asked you how did you install SqueakDBX/GlorpDBX because we are VERY near to release a new version of the new project called DBXTalk in which we will release a new version of SqueakDBX, which will be called OpenDBXDriver and a new release of GlorpDBX and Glorp, which we port the latest version from VW. You will have more news very soon, but I recommend you to migrate to this new stuff once it is out. > > | 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 ]. > > I am out of time right now, but I would love if you or someone can take this piece of code and "adapt it" as a regular SqueakDBX test. If you do this, please do it directly in the package OpenDBXDriverTests of the repo http://www.squeaksource.com/DBXTalk. We really welcome your test :) You can add it to: DBXQueryTest. Take a look at to the existing tests there. > 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 (?) > Can you confirm it is this problem? http://www.mail-archive.com/[email protected]/msg00483.html If it is...then it seems there is no fix :( > 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, > excellent. > and I will also have a look at opendbx source code. > > great. Don't be shy to ask to ask and OpenDBX mailing list. > 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] <[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-...@mail.gmail.com<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 >> >> > -- Mariano http://marianopeck.wordpress.com
