Re: bsqldb crashes, fisql does not give the desired results
Frantisek Hanzlik <[email protected]>
| Newsgroups | gmane.comp.db.tds.freetds |
|---|---|
| Message-ID | <[email protected]> |
Frediano Ziglio wrote: > Sorry, I didn't note I don't have all required tables. Can you do and send > a dump (TDSDUMP) ? > > Frediano > > > 2014-07-02 17:33 GMT+01:00 Frantisek Hanzlik <[email protected]>: > >> I'm absolute newbie in SQL, thus please forgive me if I do something >> stupid. >> I tried run this script (which is working fine with >> \Program Files\Microsoft SQL Server\90\Tools\Binn\osql.exe >> from MS SQL server 2005 on Windows 2003 server) : >> >> >> --- script begin >> declare >> @CityOd varchar(10), >> @CityDo varchar(10), >> @datumStavu datetime >> >> set @CityOd = 'ADAMOV' >> set @CityDo = 'WIEN' >> set @datumStavu = '2014-07-02' >> >> create table #tmp(no_ varchar(20), up decimal(38,20), >> s12 decimal(38,20), s14 decimal(38,20), s5416 decimal(38,20)) >> declare c cursor for >> select No_, [Unit Price] from [MyDB$Item] k >> where [Item Category Code] = 'E-SHOP' >> >> declare @no varchar(20), >> @up decimal(38,20), >> @s12 decimal(38,20), >> @s14 decimal(38,20), >> @s5416 decimal(38,20) >> >> open c >> fetch c into @no, @up >> while @@fetch_status=0 >> begin >> SELECT @s12 = isnull(SUM([s12]),0),@s14=isnull(SUM([s14]),0) FROM >> [MyDB$TBL1] >> WITH (READUNCOMMITTED) WHERE (bucket=5 AND f2=@no AND >> ((f8>=@CityOd AND f8<=@CityDo))) >> AND f3 < @datumStavu >> >> SELECT @s5416=isnull(SUM([s5416]),0) FROM [MyDB$TBL2] WITH >> (READUNCOMMITTED) >> WHERE (bucket=6 AND f1=1 AND f5=2 AND f6=@no AND ((f7>=@CityOd AND >> f7<=@CityDo))) >> and f10 < @datumStavu >> >> insert into #tmp values(@no, @up, @s12, @s14, @s5416) >> fetch c into @no, @up >> end >> close c >> deallocate c >> select * from #tmp >> drop table #tmp >> go >> --- script end >> >> on bsqldb and fisql from freetds-0.91-6.gitf3ae29d.fc19.x86_64 on >> Fedora 19 x86_64. >> >> When I run bsqldb with params: >> -i SQL -U user -P pwd -S sqlsrv -D test -t " " -e SQLerr -o SQLout -h -v >> >> *** Error in `/bin/bsqldb': free(): invalid pointer: 0x000000000064ae00 *** >> ======= Backtrace: ========= >> /lib64/libc.so.6[0x3b2607d0b8] >> /lib64/libsybdb.so.5(dbnextrow+0x369)[0x3ec820e1b9] >> /bin/bsqldb[0x40308b] >> /bin/bsqldb[0x4022a2] >> /lib64/libc.so.6(__libc_start_main+0xf5)[0x3b26021b45] >> /bin/bsqldb[0x402431] >> ======= Memory map: ======== >> 00400000-00406000 r-xp 00000000 09:01 1736030 >> /usr/bin/bsqldb >> 00605000-00606000 r--p 00005000 09:01 1736030 >> /usr/bin/bsqldb >> 00606000-0060a000 rw-p 00006000 09:01 1736030 >> /usr/bin/bsqldb >> 0060a000-0064f000 rw-p 00000000 00:00 0 >> [heap] >> 3974200000-3974279000 r-xp 00000000 09:01 1707453 >> /usr/lib64/libfreebl3.so >> 3974279000-3974478000 ---p 00079000 09:01 1707453 >> /usr/lib64/libfreebl3.so >> ... >> 7ffff1ab2000-7ffff7fd7000 r--p 00000000 09:01 1734848 >> /usr/lib/locale/locale-archive >> 7ffff7fd7000-7ffff7fe3000 rw-p 00000000 00:00 0 >> 7ffff7ff1000-7ffff7ff4000 rw-p 00000000 00:00 0 >> 7ffff7ff4000-7ffff7ffb000 r--s 00000000 09:01 1734941 >> /usr/lib64/gconv/gconv-modules.cache >> 7ffff7ffb000-7ffff7ffd000 rw-p 00000000 00:00 0 >> 7ffff7ffd000-7ffff7fff000 r-xp 00000000 00:00 0 >> [vdso] >> 7ffffffde000-7ffffffff000 rw-p 00000000 00:00 0 >> [stack] >> ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 >> [vsyscall] >> >> Program received signal SIGABRT, Aborted. >> 0x0000003b260359e9 in __GI_raise (sig=sig@entry=6) at >> ../nptl/sysdeps/unix/sysv/linux/raise.c:56 >> 56 return INLINE_SYSCALL (tgkill, 3, pid, selftid, sig); >> >> And stack backtrace is: >> #0 0x0000003b260359e9 in __GI_raise (sig=sig@entry=6) at >> ../nptl/sysdeps/unix/sysv/linux/raise.c:56 >> #1 0x0000003b260370f8 in __GI_abort () at abort.c:90 >> #2 0x0000003b26075d17 in __libc_message (do_abort=do_abort@entry=2, >> fmt=fmt@entry=0x3b2617e568 "*** Error in `%s': %s: 0x%s ***\n") at >> ../sysdeps/unix/sysv/linux/libc_fatal.c:196 >> #3 0x0000003b2607d0b8 in malloc_printerr (ptr=<optimized out>, >> str=0x3b2617bc75 "free(): invalid pointer", action=3) at malloc.c:4937 >> #4 _int_free (av=0x3b263ba780 <main_arena>, p=<optimized out>, >> have_lock=0) at malloc.c:3789 >> #5 0x0000003ec820e1b9 in buffer_add_row (resinfo=0x614440, >> dbproc=0x6133c0) at buffering.h:500 >> #6 dbnextrow (dbproc=dbproc@entry=0x6133c0) at dblib.c:2071 >> #7 0x000000000040308b in print_results (dbproc=dbproc@entry=0x6133c0) at >> bsqldb.c:535 >> #8 0x00000000004022a2 in main (argc=<optimized out>, argv=0x7fffffffe508) >> at bsqldb.c:210 >> >> >> >> When I tried run this SQL script with 'fisql' with params: >> -i SQL -U user -P pwd -S sqlsrv -D test -e SQLerr -o SQLout -w 65500 -n >> >> then program run seemingly without error, but SQLout output is weird: >> >> no_ >> up s12 s14 s5416 >> -------------------------------------------------------------------------------- >> -- --- --- ----- >> DB-LIBRARY error: >> Data conversion resulted in overflow >> Operating-system error: >> Success >> K2030446 >> -- --- --- ----- >> DB-LIBRARY error: >> Data conversion resulted in overflow >> Operating-system error: >> Success >> K2030457 >> -- --- --- ----- >> DB-LIBRARY error: >> Data conversion resulted in overflow >> Operating-system error: >> Success >> K2030469 >> -- --- --- ----- >> DB-LIBRARY error: >> Data conversion resulted in overflow >> Operating-system error: >> Success >> K2030471 >> -- --- --- ----- >> ... >> >> >> Can anyone advise me what I'm doing wrong? >> >> Thanks in advance, Franta Hanzlik Hi Frediano, thank you for the quick reply. Please, could you specify a little more detail, what should I do? Although MS osql result output is approx. 3100 rows and 600 kB size, source tables are big (table MyDB$Item has ~ 64 MB, table MyDB$TBL1 ~ 426 MB and table MyDB$TBL2 ~ 444 MB). Also, I not know what is "TDSDUMP", sorry. Thanks, Franta Hanzlik