[squeak-dev] ODBC, JOIN table with same column names.

Eric Hochmeister erichochmeister at gmail.com
Fri Jul 18 17:14:19 UTC 2008


The column names in the buffers from the ODBC client doesn't contain
the alias preceeding the column name but just the column name itself.

I made the following change, I have not optimized it or anything, so
its very very rough, I just wanted a quick working result (proof of
concept), but I believe the method should be sufficient once made
robust and to handle weird cases.

The change is in ODBCResultSet>>fetchRow
======================================

fetchRow
	"private - fetch the next row"
	| row ret querySubstrings |
	ret _ ODBCLibrary default sqlFetch: handle.
	ret == SQLNODATAFOUND
		ifTrue: [^ nil].
	connection checkSQLReturn: ret statement: handle.
	""
	row _ ODBCRow new: columns size.
	querySubstrings := statement query substrings collect:[:each | each
trimCommas ].
	columns
		do: [:each |
			( statement query isSelectQuery ) ifTrue:[
				row at:(querySubstrings at:((columns indexOf:each) + 1)) asSymbol
put:each data]
			ifFalse:[
				row at: each name put: each data]].
	^ row

======================================


On Fri, Jul 18, 2008 at 6:55 AM, Germán Arduino <garduino at gmail.com> wrote:
> Hi Marcelo:
>
> Tried this test with the latest ODBC (loaded from Universes, image
> 3.10u3 from Lex Spoon) and an Access DB (Don't sure of the version,
> may be 2000).
>
>
>
> 2008/7/17 marcelo Cortez <jmdc_marcelo at yahoo.com.ar>:
>> German
>>
>> what odbc and database you are using?
>>
>> best
>> mdc
>>
>>
>>
>>
>> --- El jue 17-jul-08, Germán Arduino <garduino at gmail.com> escribió:
>>
>>> De: Germán Arduino <garduino at gmail.com>
>>> Asunto: Re: [squeak-dev] ODBC, JOIN table with same column names.
>>> Para: "The general-purpose Squeak developers list" <squeak-dev at lists.squeakfoundation.org>
>>> Fecha: jueves, 17 de julio de 2008, 8:39 pm
>>> Forgot to say that is an ODBC problem because the same
>>> select running
>>> natively on Access works ok.
>>>
>>> I will record this problem as bug to be solved on the wiki
>>> ODBC page.
>>>
>>> Cheers.
>>> Germán.
>>>
>>>
>>> 2008/7/17 Germán Arduino <garduino at gmail.com>:
>>> > Hi:
>>> >
>>> > You are right. I tried and have the same behaviour,
>>> never detected
>>> > before. (I tried with an Access DB builded fastly, but
>>> the problem is
>>> > the same you comment).
>>> >
>>> > Never heard about this behaviour, but if time permit,
>>> I will investigate a bit.
>>> >
>>> > Cheers.
>>> > Germán.
>>> >
>>> >
>>> > 2008/7/17 Eric Hochmeister
>>> <erichochmeister at gmail.com>:
>>> >> Hi,
>>> >>
>>> >> I'm using the ODBC driver for squeak and I was
>>> running into an issue
>>> >> with JOIN tables where the 2 tables I'm
>>> joining have identical column
>>> >> names.
>>> >> ie. I have a table X and table Y.
>>> >> both tables have columns ID, FIRST_NAME
>>> >>
>>> >> So when I do the query,
>>> >>
>>> >> SELECT c1.ID, c1.FIRST_NAME, d1.FIRST_NAME FROM X
>>> c1, Y d1 WHERE c1.ID = d1.ID
>>> >>
>>> >> I get back rows which only have ID and FIRST_NAME
>>> (2 columns), rather than 3.
>>> >>
>>> >> I'm just curious if this is a known bug, or if
>>> I'm missing something,
>>> >> ie. not doing this correctly.  Has anyone else run
>>> in to this issue,
>>> >> or do you solve it differently?
>>> >>
>>> >> Thanks,
>>> >>
>>> >> Eric
>>> >>
>>> >>
>>> >
>>>
>>>
>>>
>>> --
>>> Germán S. Arduino
>>> http://www.arsol.biz
>>> http://www.arsol.net
>>
>>
>>      ____________________________________________________________________________________
>> ¡Buscá desde tu celular!
>>
>> Yahoo! oneSEARCH ahora está en Claro
>>
>> http://ar.mobile.yahoo.com/onesearch
>>
>>
>
>



More information about the Squeak-dev mailing list