----- Forwarded message from Steven Ovits <[EMAIL PROTECTED]> -----
Date: Wed, 17 Oct 2007 21:02:14 -0400
From: Steven Ovits <[EMAIL PROTECTED]>
To: sqlobject-discuss@lists.sourceforge.net
Cc: [EMAIL PROTECTED], [EMAIL PROTECTED]
Subject: Re: [Imdbpy-devel] MS SQL Server
X-Mailer: Microsoft Windows Mail 6.0.6000.16480

I'm new around here, and don't know Python or the SQLObject api, so I 
apologize if this is useless or goes against the goals of SQLObject. It 
seems to me that trying to do version-specific things for particular 
databases is like opening a large can of worms. Once you open it, there's no 
putting them back. If you haven't gone there yet, trying to find a different 
approach might make more sense.

For mssql, if SELECT @@VERSION returns something, it's either version 6.5 or 
7.0. SELECT  SERVERPROPERTY('productversion'), SERVERPROPERTY 
('productlevel'), SERVERPROPERTY ('edition') works for versions 8 and 9. 
Each might have a different maximum length for varchar, and support the text 
type or not. (The text type is deprecated, so version 10 might not support 
it.) More problematic is that the maximum size of a varchar column depends 
on other things besides version, such as how much other data is in the 
column and whether the "text in row" option is on or off. This isn't just an 
mssql issue--the same kind of thing happens in other databases.

Do you want to support this kind of thing for Oracle? Db2? All the other 
databases? What about standard SQL, which has always been more a myth than 
reality. Is it DELETE table or DELETE from table? A different approach might 
be more productive. Personally, I think you should limit the 
database-independent support to the minimum you can reasonably support 
that's also widely used. The extra things can go into the database-specific 
files. I'd even separate the core database-specific files and keep these 
half supported things in separate files, such as mssql.utils.py. These 
wouldn't be derived from the core classes, but still work with them. Treat 
them as user submitted, unsupported tips, utility functions, suggestions, 
FAQ, etc, but written as separate code files that users can use in addition 
to the supported core.

Some things belong in the core. In addition to alowing some way for users to 
specify database-specific data types and execute arbitrary database-specific 
sql, even things like tsql or java, two other things are important. The 
database connection needs to be usable from code that doesn't use SQLObject. 
This might need to be done in the other direction, where the user passes in 
the connection they create somewhere else. I had to allow this in an inside 
an ODBC/OpenX api in order to support DB2 embedded SQL, because embedded sql 
requires the connection to be created through the embedded SQL api. The 
second thing that need to be shared like this is transactions. Users should 
be able to mix the two types of code within a single transaction. Beyond 
this, it's a matter of choosing what you can reasonably support.

This kind of approach frees you from maintaining all kinds of feature 
requests, but still allows users to do anything they want. You don't need to 
support all these things, but you also don't prevent users from doing the 
hard things themselves. If there's enough "user-supported" code from 
different databases to make it easy to move it into the core, that's great, 
but doing that also means having to maintain it in the future.

>Message: 9
>Date: Wed, 17 Oct 2007 17:02:20 +0400
>From: Oleg Broytmann <[EMAIL PROTECTED]>
>Subject: Re: [SQLObject] SQL Server varchar(4000) instead of TEXT
>To: sqlobject-discuss@lists.sourceforge.net
>Message-ID: <[EMAIL PROTECTED]>
>Content-Type: text/plain; charset=us-ascii
>
>On Wed, Oct 17, 2007 at 02:45:24PM +0200, Davide Alberani wrote:
>>2007/10/15, Oleg Broytmann <[EMAIL PROTECTED]>:
>>>    How can I ask the version of the server?
>>
>>See these instructions (again suggested by Steven Ovits):
>>  http://support.microsoft.com/?id=321185
>
>  Thank you. That is, if I need to test if SQL Server support MAX-types,
>I have to try to issue the query
>
>  SELECT @@VERSION
>
>If it fails - it is SQL Server 2005. If the query returns a result - I 
>have
>a server version 5.0+, and any version of it supports MAX-types.
>  Right?
>
>>I'm more and more persuaded that the "S" of "SQL" means "Structured" and 
>>not
>>"Standard". ;-)
>
>  Could it depend on the previous letters? If the letters are 'M' and 'S'
>- does it make things better or worse? ;)
>
>Oleg.
>-- 
>    Oleg Broytmann            http://phd.pp.ru/            [EMAIL PROTECTED]
>          Programmers don't die, they just GOSUB without RETURN.
----- End forwarded message -----

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
sqlobject-discuss mailing list
sqlobject-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss

Reply via email to