[Seaside] new version of ROE

danil osipchuk danil at tsnet.ru
Thu Apr 8 12:01:02 CEST 2004

Hello Brett and Avi (Avi thanks, your support is great)

> Different databases  support case sensitivity differently.  Sql Server
> allows you to configure the database as case insensitive or case
> sensitive for identifiers upon creation of the database.  If the
> database is configured as case sensitive - then the column "ColOne" and
> "colone" are considered different columns.  I think we'll need to
> address this as we add support for different database platforms.  Note -
> an ODBC Relation could be accessing many different types of databases
> which each have handle the case differently.

Yes, it's true. I made a little attempt to launch ROE via ODBC with 
firebird (opensource fork of interbase) and, heh :), ms access - it 
didn't work "as it is", mainly because of this issues, I guess. As at 
present I'm relying on Postrgres (in fact migrating to from firebird) I 
have no strong motivation to dig deeper, but it's clear that odbc is not 
such universal thing as one may want. In my working code I temporaraly 
quote-protected table names as attributes - sure that this is not 
universal too.

>>I haven't yet adapted any of the support for other databases (Oracle 
>>from the VW port, ODBC from Dolphin).  If you guys want to send me 
>>fileouts of SQLRelation subclasses and supporting SQLPrinters that work 
>>with the new version, I'll be happy to include them in the next 

I'll try to make something useful with roe and will not try hard to be 
in sync with your repository. I'll share my expressions and catch up 
later - after some certain round of work. I'm attaching current version 
of Dolphin ODBC-SQLRelation.

 >>If I missed something important, let me know.

Avi. Not very important really, but... I looked in new version - it 
seems that you forgot to add #projectAll: - #addValues: interface - it's 
very nice really (and simple to add)

-------------- next part --------------
'From Squeak3.6 of ''6 October 2003'' [latest update: #5429] on 8 April 2004 at 1:47:30 pm'!
RASQLRelation subclass: #RADolphinDBRelation
	instanceVariableNames: ''
	classVariableNames: ''
	poolDictionaries: ''
	category: 'Roe-Compat/Dolphin'!

!RADolphinDBRelation methodsFor: 'private' stamp: 'dao 3/30/2004 16:41'!
	^(connection columns: self name) collect: [:ea | ea name]! !

!RADolphinDBRelation methodsFor: 'private' stamp: 'dao 3/30/2004 16:43'!
	^(self attributeNames)
 		collect: [ :each | RASimpleAttribute named: each relation: self ]	! !

!RADolphinDBRelation methodsFor: 'private' stamp: 'dao 3/30/2004 17:26'!
exec: aString
	| start |
	self log ifTrue: [Transcript cr; show: aString. start := Time millisecondClockValue].
	connection exec: aString. 
	self log ifTrue: [Transcript show: ' [', (Time millisecondClockValue - start) asString, ']'].
	! !

!RADolphinDBRelation methodsFor: 'private' stamp: 'dao 3/30/2004 17:26'!
query: aString
	| result start |
	self log ifTrue: [Transcript cr; show: aString. start := Time millisecondClockValue].
	result := connection query: aString. 
	self log ifTrue: [Transcript show: ' [', (Time millisecondClockValue - start) asString, ']'].
	^ result isEmpty
		ifTrue: [#()]
		ifFalse: [ result collect: [:row | row contents]]! !

!RADolphinDBRelation methodsFor: 'core' stamp: 'dao 3/30/2004 16:47'!
	^(connection query: self sqlCount) first at: 'count'
		! !

More information about the Seaside mailing list