Skip to Content.
Sympa Menu

freetds - Re: [freetds] DBD::Sybase placeholder support

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: "James K. Lowden" <jklowden AT freetds.org>
  • To: FreeTDS Development Group <freetds AT lists.ibiblio.org>
  • Subject: Re: [freetds] DBD::Sybase placeholder support
  • Date: Sat, 10 May 2008 12:57:09 -0400

Dan Wierenga wrote:
> > If you send me a TDSDUMP log, I hope I'd be able to tell you how it
> > works.
>
> Script and log attached.

Another surprise: that's a TDS 4.2 log. Does it also work with TDS 7.0?

As to why it works, all I can say is that ct_dynamic was added in 2005 and
reworked somewhat in 2006. Placeholder support is entirely client-side in
4.2; the query is sent interpolated to the server:

net.c:673:Sending packet
0000 01 01 00 2f 00 00 00 00-53 45 4c 45 43 54 20 62 |.../.... SELECT b|
0010 61 72 20 46 52 4f 4d 20-64 61 6e 6f 20 57 48 45 |ar FROM dano WHE|
0020 52 45 20 66 6f 6f 20 3d-20 27 6f 69 6e 6b 27 |RE foo = 'oink'|

The client isn't getting any server-side benefit; the server isn't
preparing and caching a query plan. Any benefit is limited to programming
style.

With TDS 7.0, we use Microsoft's secret stored procedures e.g.
sp_executesql. That's what I think doesn't work with ct-lib. But I'm
happy to be proved wrong!

Frediano, do we have any documentation -- ours or Microsoft's -- on
sp_prepare, sp_executesql, etc.? We should add it to tds.html.

--jkl




Archive powered by MHonArc 2.6.24.

Top of Page