Re: Prompts While Installing freebsd package

Igor Korot <[email protected]>
Newsgroups gmane.comp.db.tds.freetds
Message-ID <CA+FnnTzMrFdRu6SfdRkD5s0+TuVBOnUWNtL=gAx9k4G6enMQ6g@mail.gmail.com>
James,

On Wed, Oct 10, 2012 at 8:41 PM, James K. Lowden <[email protected]> wrote:
> On Tue, 9 Oct 2012 13:33:02 -0400
> Evan Panagiotopoulos <[email protected]> wrote:
>
>> During the installation of the package I receive the  prompt:
>>
> ...
>> [ ] MSDBLIB   MS SQL Server support (breaks databases/sybtcl)
>>
>> Since I am trying to connect to a MS SQL database I should select the
>> last option, MSDBLIB   MS SQL Server support. Is this assumption
>> correct?
>
> Not only is it incorrect, it is groundless.  You should file a bug
> report with the packager.
>
> The --enable-msdblib configuration option causes a lot of confusion.
> The confusion, however, is not caused by anything difficult or
> complicated about the option.  Rather, it seems to stem from a lack of
> knowledge that makes plain language meaningless!
>
> Many people seem to assume that if their server is made by Microsoft,
> then perhaps they need this "MS" option.
>
> Why *assume*?  Why not just read?
>
> $ ~/freetds/configure --help | grep msdb
>   --enable-msdblib        for MS style dblib
>
> No mention of SQL Server.
>
> http://www.freetds.org/userguide/config.htm
>
>         "--enable-msdblib
>         Enable Microsoft behavior in the DB-Library API where it
> diverges from Sybase's. Use this option if you are replacing
> Microsoft's libraries with FreeTDS"
>
> No mention of SQL Server.
>
> OK, so it's not about the server.  What *is* it about?
>
> A C program may use the db-lib library, That library was
> implemented by Sybase and Microsoft, who defined the names of the
> functions and what they do. While the implementations are largely
> compatible, there are some small differences.
>
> For example, dbdatecrack() converts a SQL DATETIME into a DBDATEREC
> structure.  The vendors each define that structure in their own way.
> For example, Sybase defines a "year" member, but Microsoft defines
> "dateyear". Most important, they both define "month", but Sybase says
> month is 0-11, and Microsoft says it's 1-12.
>
> Now, be a C program for a minute.
>
>         dbsqlexec(dbproc, "SELECT db_date()");
>         DBDATETIME *datetime = dbdata(dbproc);
>         DBDATEREC daterec;
>         dbdatecrack(dbproc, &daterec, datetime);
>
> In daterec.month, you find the value 9.  Does that mean
> September or October?  That depends on whose definition of
> dbdatecrack() was used.
>
> FreeTDS is an ecumenical libary.  If you define MSDBLIB either at
> configuration time or at compilation time, 9 means September.  If you
> don't, it means October.  (There is a runtime aspect, too, that I'm
> ignoring for simplicity.)
>
> What does that mean to the PHP programmer?  PHP is a C program.  You
> must know how it will interpret the value or, if it won't interpret the
> value, how *you* will.
>
> If you you have no existing code affected by divergent db-lib
> semantics, you can freely ignore --enable-msdblib.  If you do have such
> code, you need to enable it or not, as compatibility dictates, else
> your date arithmetic could be a month off.

As you said yourself, there are differences between Sybase and
Microsoft in their
implementation. You just described one of them.

Is there a list of such differences available and where it is located?
If not, maybe it is
worth making it and refer to it in the UG?

Thank you.

>
> HTH.
>
> --jkl
> _______________________________________________
> FreeTDS mailing list
> [email protected]
> http://lists.ibiblio.org/mailman/listinfo/freetds
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.