Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Gpdb
提交
e8d1dcbf
G
Gpdb
项目概览
Greenplum
/
Gpdb
通知
7
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
Gpdb
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e8d1dcbf
编写于
8月 24, 2006
作者:
M
Michael Meskes
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fixed of by one variable size.
上级
b7d5a88d
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
25 addition
and
21 deletion
+25
-21
src/interfaces/ecpg/ChangeLog
src/interfaces/ecpg/ChangeLog
+4
-0
src/interfaces/ecpg/ecpglib/data.c
src/interfaces/ecpg/ecpglib/data.c
+11
-11
src/interfaces/ecpg/preproc/preproc.y
src/interfaces/ecpg/preproc/preproc.y
+2
-2
src/interfaces/ecpg/test/expected/compat_informix-rnull.c
src/interfaces/ecpg/test/expected/compat_informix-rnull.c
+4
-4
src/interfaces/ecpg/test/expected/sql-desc.c
src/interfaces/ecpg/test/expected/sql-desc.c
+4
-4
未找到文件。
src/interfaces/ecpg/ChangeLog
浏览文件 @
e8d1dcbf
...
...
@@ -2116,5 +2116,9 @@ We 23. Aug 09:32:14 CEST 2006
- Replaced double-quote-fix with a hopefully better version.
- Use initializer string length as size for character strings.
- Added ecpg_config.h file that is created via configure.
Th 24. Aug 11:53:29 CEST 2006
- Fixed of by one variable size.
- Set ecpg library version to 5.2.
- Set ecpg version to 4.2.1.
src/interfaces/ecpg/ecpglib/data.c
浏览文件 @
e8d1dcbf
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/data.c,v 1.3
3 2006/08/08 11:51:24
meskes Exp $ */
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/data.c,v 1.3
4 2006/08/24 10:35:58
meskes Exp $ */
#define POSTGRES_ECPG_INTERNAL
#include "postgres_fe.h"
...
...
@@ -406,33 +406,33 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
case
ECPGt_unsigned_char
:
if
(
pval
)
{
if
(
varcharsize
==
0
||
varcharsize
>
s
trlen
(
pval
)
)
strncpy
((
char
*
)
((
long
)
var
+
offset
*
act_tuple
),
pval
,
s
trlen
(
pval
)
+
1
);
if
(
varcharsize
==
0
||
varcharsize
>
s
ize
)
strncpy
((
char
*
)
((
long
)
var
+
offset
*
act_tuple
),
pval
,
s
ize
+
1
);
else
{
strncpy
((
char
*
)
((
long
)
var
+
offset
*
act_tuple
),
pval
,
varcharsize
);
if
(
varcharsize
<
s
trlen
(
pval
)
)
if
(
varcharsize
<
s
ize
)
{
/* truncation */
switch
(
ind_type
)
{
case
ECPGt_short
:
case
ECPGt_unsigned_short
:
*
((
short
*
)
(
ind
+
ind_offset
*
act_tuple
))
=
s
trlen
(
pval
)
;
*
((
short
*
)
(
ind
+
ind_offset
*
act_tuple
))
=
s
ize
;
break
;
case
ECPGt_int
:
case
ECPGt_unsigned_int
:
*
((
int
*
)
(
ind
+
ind_offset
*
act_tuple
))
=
s
trlen
(
pval
)
;
*
((
int
*
)
(
ind
+
ind_offset
*
act_tuple
))
=
s
ize
;
break
;
case
ECPGt_long
:
case
ECPGt_unsigned_long
:
*
((
long
*
)
(
ind
+
ind_offset
*
act_tuple
))
=
s
trlen
(
pval
)
;
*
((
long
*
)
(
ind
+
ind_offset
*
act_tuple
))
=
s
ize
;
break
;
#ifdef HAVE_LONG_LONG_INT_64
case
ECPGt_long_long
:
case
ECPGt_unsigned_long_long
:
*
((
long
long
int
*
)
(
ind
+
ind_offset
*
act_tuple
))
=
s
trlen
(
pval
)
;
*
((
long
long
int
*
)
(
ind
+
ind_offset
*
act_tuple
))
=
s
ize
;
break
;
#endif
/* HAVE_LONG_LONG_INT_64 */
default:
...
...
@@ -441,7 +441,7 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
sqlca
->
sqlwarn
[
0
]
=
sqlca
->
sqlwarn
[
1
]
=
'W'
;
}
}
pval
+=
s
trlen
(
pval
)
;
pval
+=
s
ize
;
}
break
;
...
...
@@ -451,7 +451,7 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
struct
ECPGgeneric_varchar
*
variable
=
(
struct
ECPGgeneric_varchar
*
)
((
long
)
var
+
offset
*
act_tuple
);
variable
->
len
=
s
trlen
(
pval
)
;
variable
->
len
=
s
ize
;
if
(
varcharsize
==
0
)
strncpy
(
variable
->
arr
,
pval
,
variable
->
len
);
else
...
...
@@ -489,7 +489,7 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
variable
->
len
=
varcharsize
;
}
}
pval
+=
s
trlen
(
pval
)
;
pval
+=
s
ize
;
}
break
;
...
...
src/interfaces/ecpg/preproc/preproc.y
浏览文件 @
e8d1dcbf
/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.33
0 2006/08/23 12:01:52
meskes Exp $ */
/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.33
1 2006/08/24 10:35:58
meskes Exp $ */
/* Copyright comment */
%{
...
...
@@ -5422,7 +5422,7 @@ variable: opt_pointer ECPGColLabel opt_array_bounds opt_bit_field opt_initialize
/* if we have an initializer but no string size set, let's use the initializer's length */
free(length);
length = mm_alloc(i+sizeof("sizeof()"));
sprintf(length, "sizeof(%s)
+1
", $5+2);
sprintf(length, "sizeof(%s)", $5+2);
}
type = ECPGmake_simple_type(actual_type[struct_level].type_enum, length);
}
...
...
src/interfaces/ecpg/test/expected/compat_informix-rnull.c
浏览文件 @
e8d1dcbf
...
...
@@ -119,7 +119,7 @@ if (sqlca.sqlcode < 0) sqlprint ( );}
{
ECPGdo
(
__LINE__
,
1
,
0
,
NULL
,
"insert into test ( id , c , s , i , b , f , l , dbl ) values( 1 , ? , ? , ? , ? , ? , ? , ? ) "
,
ECPGt_char
,(
c
),(
long
)
sizeof
(
"abc "
)
+
1
,(
long
)
1
,(
sizeof
(
"abc "
)
+
1
)
*
sizeof
(
char
),
ECPGt_char
,(
c
),(
long
)
sizeof
(
"abc "
)
,(
long
)
1
,(
sizeof
(
"abc "
)
)
*
sizeof
(
char
),
ECPGt_NO_INDICATOR
,
NULL
,
0L
,
0L
,
0L
,
ECPGt_short
,
&
(
s
),(
long
)
1
,(
long
)
1
,
sizeof
(
short
),
ECPGt_NO_INDICATOR
,
NULL
,
0L
,
0L
,
0L
,
...
...
@@ -157,7 +157,7 @@ if (sqlca.sqlcode < 0) sqlprint ( );}
rsetnull
(
CDTIMETYPE
,
(
char
*
)
&
tmp
);
{
ECPGdo
(
__LINE__
,
1
,
0
,
NULL
,
"insert into test ( id , c , s , i , b , f , l , dbl , dec , dat , tmp ) values( 2 , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? ) "
,
ECPGt_char
,(
c
),(
long
)
sizeof
(
"abc "
)
+
1
,(
long
)
1
,(
sizeof
(
"abc "
)
+
1
)
*
sizeof
(
char
),
ECPGt_char
,(
c
),(
long
)
sizeof
(
"abc "
)
,(
long
)
1
,(
sizeof
(
"abc "
)
)
*
sizeof
(
char
),
ECPGt_NO_INDICATOR
,
NULL
,
0L
,
0L
,
0L
,
ECPGt_short
,
&
(
s
),(
long
)
1
,(
long
)
1
,
sizeof
(
short
),
ECPGt_NO_INDICATOR
,
NULL
,
0L
,
0L
,
0L
,
...
...
@@ -192,7 +192,7 @@ if (sqlca.sqlcode < 0) sqlprint ( );}
printf
(
"first select
\n
"
);
{
ECPGdo
(
__LINE__
,
1
,
0
,
NULL
,
"select c , s , i , b , f , l , dbl , dec , dat , tmp from test where id = 1 "
,
ECPGt_EOIT
,
ECPGt_char
,(
c
),(
long
)
sizeof
(
"abc "
)
+
1
,(
long
)
1
,(
sizeof
(
"abc "
)
+
1
)
*
sizeof
(
char
),
ECPGt_char
,(
c
),(
long
)
sizeof
(
"abc "
)
,(
long
)
1
,(
sizeof
(
"abc "
)
)
*
sizeof
(
char
),
ECPGt_NO_INDICATOR
,
NULL
,
0L
,
0L
,
0L
,
ECPGt_short
,
&
(
s
),(
long
)
1
,(
long
)
1
,
sizeof
(
short
),
ECPGt_NO_INDICATOR
,
NULL
,
0L
,
0L
,
0L
,
...
...
@@ -232,7 +232,7 @@ if (sqlca.sqlcode < 0) sqlprint ( );}
printf
(
"second select
\n
"
);
{
ECPGdo
(
__LINE__
,
1
,
0
,
NULL
,
"select c , s , i , b , f , l , dbl , dec , dat , tmp from test where id = 2 "
,
ECPGt_EOIT
,
ECPGt_char
,(
c
),(
long
)
sizeof
(
"abc "
)
+
1
,(
long
)
1
,(
sizeof
(
"abc "
)
+
1
)
*
sizeof
(
char
),
ECPGt_char
,(
c
),(
long
)
sizeof
(
"abc "
)
,(
long
)
1
,(
sizeof
(
"abc "
)
)
*
sizeof
(
char
),
ECPGt_NO_INDICATOR
,
NULL
,
0L
,
0L
,
0L
,
ECPGt_short
,
&
(
s
),(
long
)
1
,(
long
)
1
,
sizeof
(
short
),
ECPGt_NO_INDICATOR
,
NULL
,
0L
,
0L
,
0L
,
...
...
src/interfaces/ecpg/test/expected/sql-desc.c
浏览文件 @
e8d1dcbf
...
...
@@ -228,7 +228,7 @@ if (sqlca.sqlcode < 0) sqlprint();}
{
ECPGget_desc
(
__LINE__
,
"outdesc"
,
1
,
ECPGd_data
,
ECPGt_char
,(
val2output
),(
long
)
sizeof
(
"AAA"
)
+
1
,(
long
)
1
,(
sizeof
(
"AAA"
)
+
1
)
*
sizeof
(
char
),
ECPGd_EODT
);
ECPGt_char
,(
val2output
),(
long
)
sizeof
(
"AAA"
)
,(
long
)
1
,(
sizeof
(
"AAA"
)
)
*
sizeof
(
char
),
ECPGd_EODT
);
#line 51 "desc.pgc"
...
...
@@ -254,7 +254,7 @@ if (sqlca.sqlcode < 0) sqlprint();}
{
ECPGdo
(
__LINE__
,
0
,
1
,
NULL
,
"fetch next from c1"
,
ECPGt_EOIT
,
ECPGt_int
,
&
(
val1output
),(
long
)
1
,(
long
)
1
,
sizeof
(
int
),
ECPGt_int
,
&
(
ind1
),(
long
)
1
,(
long
)
1
,
sizeof
(
int
),
ECPGt_char
,(
val2output
),(
long
)
sizeof
(
"AAA"
)
+
1
,(
long
)
1
,(
sizeof
(
"AAA"
)
+
1
)
*
sizeof
(
char
),
ECPGt_char
,(
val2output
),(
long
)
sizeof
(
"AAA"
)
,(
long
)
1
,(
sizeof
(
"AAA"
)
)
*
sizeof
(
char
),
ECPGt_int
,
&
(
ind2
),(
long
)
1
,(
long
)
1
,
sizeof
(
int
),
ECPGt_EORT
);
#line 57 "desc.pgc"
...
...
@@ -304,7 +304,7 @@ if (sqlca.sqlcode < 0) sqlprint();}
{
ECPGdo
(
__LINE__
,
0
,
1
,
NULL
,
"fetch next from c2"
,
ECPGt_EOIT
,
ECPGt_int
,
&
(
val1output
),(
long
)
1
,(
long
)
1
,
sizeof
(
int
),
ECPGt_NO_INDICATOR
,
NULL
,
0L
,
0L
,
0L
,
ECPGt_char
,(
val2output
),(
long
)
sizeof
(
"AAA"
)
+
1
,(
long
)
1
,(
sizeof
(
"AAA"
)
+
1
)
*
sizeof
(
char
),
ECPGt_char
,(
val2output
),(
long
)
sizeof
(
"AAA"
)
,(
long
)
1
,(
sizeof
(
"AAA"
)
)
*
sizeof
(
char
),
ECPGt_int
,
&
(
val2i
),(
long
)
1
,(
long
)
1
,
sizeof
(
int
),
ECPGt_EORT
);
#line 69 "desc.pgc"
...
...
@@ -323,7 +323,7 @@ if (sqlca.sqlcode < 0) sqlprint();}
{
ECPGdo
(
__LINE__
,
0
,
1
,
NULL
,
"select * from test1 where a = 3 "
,
ECPGt_EOIT
,
ECPGt_int
,
&
(
val1output
),(
long
)
1
,(
long
)
1
,
sizeof
(
int
),
ECPGt_NO_INDICATOR
,
NULL
,
0L
,
0L
,
0L
,
ECPGt_char
,(
val2output
),(
long
)
sizeof
(
"AAA"
)
+
1
,(
long
)
1
,(
sizeof
(
"AAA"
)
+
1
)
*
sizeof
(
char
),
ECPGt_char
,(
val2output
),(
long
)
sizeof
(
"AAA"
)
,(
long
)
1
,(
sizeof
(
"AAA"
)
)
*
sizeof
(
char
),
ECPGt_int
,
&
(
val2i
),(
long
)
1
,(
long
)
1
,
sizeof
(
int
),
ECPGt_EORT
);
#line 74 "desc.pgc"
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录