[prev in list] [next in list] [prev in thread] [next in thread] 

List:       freetds
Subject:    Re: [freetds] Unicode: Need for a DSN parameter to
From:       Sebastien FLAESCH <sf () 4js ! com>
Date:       2008-01-12 13:07:42
Message-ID: 4788BB9E.3080900 () 4js ! com
[Download RAW message or body]

Ok then I can do the following, if you agree:

   ClientCharset
   Encryption
   DumpFile
   DumpFileAppend (dump file append in freetds.conf)
   DebugFlags

Do we agree on that?

About re-using code of src/tds/config.c:

They idea was to reuse the basic function tds_parse_conf_section() to
analyze the entries of the ODBC file, having src/odbc/connectparams.c
reading the source file as usual, but mapping the ODBC DSN entries
to freetds.conf entry names:

   if (myGetPrivateProfileString(DSN, "ClientCharset", "", tmp) > 0)
       tds_parse_conf_section(TDS_STR_CLCHARSET, tmp, connection);

Of course tds_parse_conf_section must then be global, not static.

Would that cause problems?

Note that since a boolean ODBC parameter is added (DumpFileAppend),
we would need to extend tds_config_boolean() because this function
does not handle "Yes" / "No" values (with uppercase Y and N).

Let me send you a first patch by mail and then we continue to discuss,
I will follow your recommendations then, no prob.

Bye
Seb

Frediano Ziglio wrote:
> Il giorno ven, 11/01/2008 alle 13.34 -0500, James K. Lowden ha scritto:
>> Sebastien FLAESCH wrote:
>>> I started to look at it and it appears that many parameters are missing
>>> in the ODBC config, so far I have added these (using src/tds/config.c as
>>> ref):
>>>
>> These we need:
>>
>>>    ClientCharset
>>>    ConnectionTimeout
>>>    DebugFlags
>>>    Encryption
>>>    QueryTimeout
> 
> QueryTimeout and ConnectionTimeout can be set using standard ODBC calls
> (SQLSetConnectAttr/SQLSetStmtAttr) so I would avoid.
> 
> DebugFlags and DumpFile are very bounded if you add one I would add the
> other.
> 
>> These are IMO optional:
>>
>>>    DumpFile
>> 	can use TDSDUMP instead
>>>    Instance
>> 	can use instance\server instead
>>
> 
> The standard way (call it Microsoft way) to set instance is server
> \instance. There is also a server,port syntax.
> 
>> These we don't need:
>>
>>>    EmulateLittleEndian
>> 	Applies only to TDS 4.2
>>>    ServerCharset
>> 	Not a client setting, server tells us
>>>    SwapBrokenDates
>>>    SwapBrokenMoney
>> 	Done automatically for many years
>>
> 
> I agree to not add these.
> 
>> FYI regarding charsets.  It should be the case that the client charset is
>> first derived from the locale(1) environment.  Setting it in freetds.conf
>> or odbc.ini overrides that default.  
>>
>>> Started to hack and now I realize that it would be smarter to have the
>>> src/odbc/connectparams.c module USING the src/tds/config.c module
>> Absolutely! 
>>
> 
> If you want to use src/tds/config.c to read odbc.ini entries I'm again
> this. The reason is that different DMs could read this file in slightly
> different way. Consider this
> - different file encoding
> - different quoting
> - different file locations (/etc/odbc.ini or others)
> - different override (for instance with unixODBC you can override
> odbc.ini locations using environment)
> 
>>> I could also see that the ODBC code repeats the same string constants
>>> several times => candidate for a #define in some header file...
>> Yes, or 
>>
>> 	static const char something[] = "something";
>>
> 
> Yes, it would perhaps be better to have a unique function or an array
> like
> 
> struct option
> {
>   const char *name;
>   unsigned int in_ini:1, in_string:1; /* boolean, where available */
>   int (*handle_me)(...);
> }
> 
> or similar...
> 
>>> I mean, I can do a dirty/small patch or a large/smart patch ...
>>>
>>> Maybe I am too new to this project to make large changes, so I better
>>> let you guys make it nicer once posted...
>> >From your participation so far, I'm optimistic.  Do what you think is
>> right.  I would rather you do your best work and use your highest
>> judgement.  The code is not sacred.  
>>
>> If there's some issue with your patch, we can discuss it.  Normally
>> technical questions sort themselves out because they have more-or-less
>> obvious best answers.  
>>
>>> Also, are there any test cases I should add / adapt (I could not find
>>> anything in src/odbc/unittests reading an odbc.ini file)
>> That would be good if you can do it, particularly if all libraries use
>> tds/config.c.  I find that the existence of a unit test increases my
>> ability/confidence to make a change.  I can only imagine others feel the
>> same way.  
>>
>> Regards, 
>>
>> --jkl
> 
> bye
>   freddy77
> 
> 
> _______________________________________________
> FreeTDS mailing list
> FreeTDS@lists.ibiblio.org
> http://lists.ibiblio.org/mailman/listinfo/freetds
> 

_______________________________________________
FreeTDS mailing list
FreeTDS@lists.ibiblio.org
http://lists.ibiblio.org/mailman/listinfo/freetds
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic