Re: Problem with FreeTDS validating SQL commands
"James K. Lowden" <[email protected]>
| Newsgroups | gmane.comp.db.tds.freetds |
|---|---|
| Message-ID | <[email protected]> |
Stephane Magne wrote: > > Please correct me if I'm wrong, but it's my understanding that > ct_command() ... will also > determine if it is valid SQL syntax or if the Stored Procedure call > is valid. I don't think you can depend on that. I just re-read Sybase's description of ct_command. It doesn't imply any interaction with the server, and it explicitly says the command text need not even by SQL: "A language command can be in any language, as long as the server to which it is directed can understand it. Adpative Server understands Transact-SQL, but an Open Server application constructed with Server- Library can be written to understand any language." FreeTDS never parses SQL. If you refer to a nonexistent procedure or table, you'll hear about it soon enough from the server. The ct-lib reference manual gives no reasons for ct_command to return CS_FAIL, and I don't know of a canonical list of library error messages. That's the documentation story. The implentation and emulation perspective might be more complicated. Do you get any more feedback from Sybase's library besides CS_FAIL? > In contrast, the SybaseOpenClient framework will return the CS_FAIL > result if the SQL isn't properly formatted. However, the source > isn't readily available to us so we can't compare the two. I'm not aware the source is available at all, readily or not. ;-) What you could do, if you want to investigate further, is use tdsdump(8) to capture the server interaction, if any, that results from a ct_command call. If there's something there, we could take advantage of it. If there is none, then I have to say the documented and observed behavior agree: you can put whatever language text you please into your command buffer. It's not an error insofar as the library is concerned. HTH. --jkl