[freetds] Help needed with standard error output with using fisql

James K. Lowden jklowden at freetds.org
Fri Jun 5 21:19:50 EDT 2009


Modesto Sevilla wrote:
> I am having problem redirecting the standard error when I use fisql 
> with an input file.
> The -e parameter is now used for echoing SQL input not standard error.

-e writes to standard output.  Cf. src/app/fisql/fisql.c, line 637:

    635                 for (i = 0; i < ibuflines; i++) {
    636                         if (echo) {
    637                                 puts(ibuf[i]);
    638                         }
    639                         dbcmd(dbproc, ibuf[i]);
    640                         dbcmd(dbproc, "\n");
    641                         free(ibuf[i]);
    642                 }

> When I have an error in the sql_file, I get a segmentation fault but the
> 
> output_log is blank.

Works here:

$ cat i
print 'hello' 
select 'goodbye' 
raiserror( 'this is a mistake', 16, 1)
go
$ fisql -S$S -U$U -P$P -e -ii -oo   
$ cat o
1>> 2>> 3>> 4>> print 'hello' 
select 'goodbye' 
raiserror( 'this is a mistake', 16, 1)
hello
       
-------
goodbye

(1 rows affected)
Msg 50000, Level 16, State 1:
Server 'TITAN', Line 3:
this is a mistake
DB-LIBRARY error:
        General SQL Server error: Check messages from the SQL Server
Operating-system error:
        (null)
1>> 

> Anyone has any ideas?

bsqldb might be better suited to what you're doing:

$ bsqldb -S$S -U$U -P$P -ee -ii -oo
$ tail i e o
==> i <==
print 'hello' 
select 'goodbye' 
raiserror( 'this is a mistake', 16, 1)
go

==> e <==
hello
@@rowcount not available
       
-------
1 rows affected
Msg 50000, Level 16, State 1
Server 'TITAN', Line 3
        this is a mistake
bsqldb: error: severity 16 > 10, exiting

==> o <==
goodbye


HTH.

--jkl



More information about the FreeTDS mailing list