Skip to Content.
Sympa Menu

freetds - Re: [freetds] defncopy query "order by" different for ASE

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: Frediano Ziglio <freddy77 AT gmail.com>
  • To: FreeTDS Development Group <freetds AT lists.ibiblio.org>
  • Subject: Re: [freetds] defncopy query "order by" different for ASE
  • Date: Thu, 25 Aug 2016 12:34:45 +0100

2016-08-24 19:20 GMT+01:00 John Kendall <john AT capps.com>:
>
>> On Aug 24, 2016, at 10:50 AM, James K. Lowden <james.k.lowden AT icloud.com>
>> wrote:
>>
>> On Wed, 24 Aug 2016 06:25:47 +0000
>> John Kendall <john AT capps.com> wrote:
>>
>>>
>>>> On Aug 23, 2016, at 10:41 PM, James K. Lowden
>>>> <james.k.lowden AT icloud.com> wrote:
>>>>
>>>> On Wed, 24 Aug 2016 01:38:25 +0000
>>>> John Kendall <john AT capps.com> wrote:
>>>>
>>>>> I figured it out. Getting the right headers in the right order
>>>>> slowed me down. Here is my patch for consideration.
>>>>
>>>> John, I think all you need is a call to the public function
>>>>
>>>> const char *dbversion(void);
>>>>
>>>
>>> It looks like dbversion() returns the FreeTDS version number,
>>> currently "freetds v1.00.13." The patch is working for me, but if
>>> there is a better way... John
>>
>> Sorry, late night. The macro you want is DBTDS(). It returns an
>> integer for which symbolic constants are defined in sybdb.h.
>>
>> --jkl
>
> That's the ticket! Many thanks.
> New, simpler patch for consideration:
>
> *** defncopy.c 2016-06-19 02:00:01.000000000 -0700
> --- defncopy.c-patch 2016-08-24 11:13:30.883345277 -0700
> *************** main(int argc, char *argv[])
> *** 220,232 ****
> " and o.name = '%s'"
> " and o.uid =
> user_id('%s')"
> " and o.type not in ('U',
> 'S')" /* no user or system tables */
> ! " order by c.number, c.colid"
> ;
> static const char query_table[] = " execute sp_help '%s.%s'
> ";
>
> parse_argument(argv[i], &procedure);
>
> ! erc = dbfcmd(dbproc, query, procedure.name,
> procedure.owner);
>
> /* Send the query to the server (we could use dbsqlexec(),
> instead) */
> erc = dbsqlsend(dbproc);
> --- 220,233 ----
> " and o.name = '%s'"
> " and o.uid =
> user_id('%s')"
> " and o.type not in ('U',
> 'S')" /* no user or system tables */
> ! " order by c.number, %s
> c.colid"
> ;
> static const char query_table[] = " execute sp_help '%s.%s'
> ";
>
> parse_argument(argv[i], &procedure);
>
> ! erc = dbfcmd(dbproc, query, procedure.name, procedure.owner,
> ! (DBTDS(dbproc) == DBTDS_5_0) ? "c.colid2,
> ":"");
>
> /* Send the query to the server (we could use dbsqlexec(),
> instead) */
> erc = dbsqlsend(dbproc);
>

Hi,
converted to a patch and applied. Both master and 1.0.

Thanks,
Frediano




Archive powered by MHonArc 2.6.24.

Top of Page