freetds AT lists.ibiblio.org
Subject: FreeTDS Development Group
List archive
Re: [freetds] The behavior of bcp, blk and insert is not corresponding.
- From: "MATSUMOTO, Tadashi" <pineroot AT yahoo.co.jp>
- To: FreeTDS Development Group <freetds AT lists.ibiblio.org>
- Subject: Re: [freetds] The behavior of bcp, blk and insert is not corresponding.
- Date: Fri, 16 Mar 2007 09:24:06 +0900
Hi,
I've made this patch to change characters ,if which are all space, into "0".
It seems to do what I want to do. Could someone give me some advice about my patch?
Thank you for your help.
========================================================================
--- freetds-0.64/src/tds/convert.c.ORG Wed Mar 7 14:32:33 2007
+++ freetds-0.64/src/tds/convert.c Thu Mar 15 19:02:50 2007
@@ -2879,22 +2879,24 @@
{ blank = ' ' };
const char *p;
int sign;
unsigned int num; /* we use unsigned here for best overflow
check */
p = buf;
/* ignore leading spaces */
while (p != pend && *p == blank)
++p;
- if (p == pend)
- return TDS_CONVERT_SYNTAX;
+ if (p == pend) {
+ p--;
+ *p = '0';
+ }
/* check for sign */
sign = 0;
switch (*p) {
case '-':
sign = 1;
/* fall thru */
case '+':
/* skip spaces between sign and number */
++p;
@@ -2954,22 +2956,24 @@
{ blank = ' ' };
const char *p;
int sign;
TDS_UINT8 num; /* we use unsigned here for best overflow
check */
p = buf;
/* ignore leading spaces */
while (p != pend && *p == blank)
++p;
- if (p == pend)
- return TDS_CONVERT_SYNTAX;
+ if (p == pend) {
+ p--;
+ *p = '0';
+ }
/* check for sign */
sign = 0;
switch (*p) {
case '-':
sign = 1;
/* fall thru */
case '+':
/* skip spaces between sign and number */
++p;
========================================================================
MATSUMOTO, Tadashi wrote:
MATSUMOTO, Tadashi wrote:
Thank you! The problem is solved. It succeeded as follows.
However, another problem occurred. Details E-mail separately.
The another problem is this. (only tested on 0.64)
Freebcp and the blk function cannot insert space into a numeric column. The "insert" statement on tsql can insert space into a numeric column as 0.
Sybase bcp and the blk function can insert space into a numeric column as 0. The "insert" statement on Sybase isql cannot insert space into a numeric column.
Why have the behavior of Sybase and FreeTds reversed?
thanks,
tsql ------------------------
drop table dbo.test_me
create table dbo.test_me (
i integer not null primary key,
c char(1) not null,
v varchar(10) null)
insert into dbo.test_me values (3,' ','string')
insert into dbo.test_me values (1,' ','string2')
insert into dbo.test_me values (2,' ',null)
insert into dbo.test_me values (4,' ',null)
select * from dbo.test_me
go
i i1 i2 c1 c2 v1 v2
1 0 1 a a string string2
2 2 0 b b string string2
3 3 3 c string string2
4 4 4 d string string2
5 5 5 e e string2
6 6 6 f f string 7 7 7 g g string string2
8 8 NULL g NULL string NULL
----------------
freebcp
------------------------
% freebcp "test_me" "out" "test_me.txt" -Sxxxx -c -Uuser -Ppass
Starting copy...
8 rows copied.
% tsql .....
truncate table test_me
go
select * from test_me
go
i i1 i2 c1 c2 v1 v2
% vi test_me.txt
% diff test_me.txt.orig test_me.txt
1,2c1,2
< 1 0 1 a a string string2
< 2 2 0 b b string string2
---
1 1 a a string string2% freebcp "test_me" "in" "test_me.txt" -Sxxxx -c -Uuser -Ppass
2 2 b b string string2
Starting copy...
Msg 20050, Level 4
Attempt to convert data stopped by syntax error in source field
Msg 20050, Level 4
Attempt to convert data stopped by syntax error in source field
6 rows copied.
% tsql .......
select * from test_me
go
i i1 i2 c1 c2 v1 v2
3 3 3 c string string2
4 4 4 d string string2
5 5 5 e e string2
6 6 6 f f string 7 7 7 g g string string2
8 8 NULL g NULL string NULL
-----------------------------
-
[freetds] blk_init fails by the even number times execution,
MATSUMOTO, Tadashi, 03/09/2007
- Re: [freetds] blk_init fails by the even number times execution, ZIGLIO, Frediano, VF-IT, 03/09/2007
-
Re: [freetds] blk_init fails by the even number times execution,
ZIGLIO, Frediano, VF-IT, 03/09/2007
-
Re: [freetds] [SOLVED] blk_init fails by the even number times execution,
MATSUMOTO, Tadashi, 03/12/2007
-
[freetds] The behavior of bcp, blk and insert is not corresponding. (Re: [SOLVED] blk_init fails by the even number times execution),
MATSUMOTO, Tadashi, 03/12/2007
-
Re: [freetds] The behavior of bcp, blk and insert is not corresponding.,
MATSUMOTO, Tadashi, 03/15/2007
- Re: [freetds] The behavior of bcp, blk and insert is not corresponding., ZIGLIO, Frediano, VF-IT, 03/16/2007
-
Re: [freetds] The behavior of bcp, blk and insert is not corresponding.,
MATSUMOTO, Tadashi, 03/15/2007
-
[freetds] The behavior of bcp, blk and insert is not corresponding. (Re: [SOLVED] blk_init fails by the even number times execution),
MATSUMOTO, Tadashi, 03/12/2007
-
Re: [freetds] [SOLVED] blk_init fails by the even number times execution,
MATSUMOTO, Tadashi, 03/12/2007
Archive powered by MHonArc 2.6.24.