Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 8902aaa

Browse files
author
Michael Meskes
committed
Fixed fetch into char * and added missing prototype for an Informix function.
1 parent 4d9eede commit 8902aaa

File tree

5 files changed

+85
-86
lines changed

5 files changed

+85
-86
lines changed

src/interfaces/ecpg/ChangeLog

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1496,6 +1496,11 @@ Sun Jun 15 11:18:58 CEST 2003
14961496
Tue Jun 17 08:45:14 CEST 2003
14971497

14981498
- Fixed several parsing bugs.
1499+
1500+
Thu Jun 19 10:08:26 CEST 2003
1501+
1502+
- Added missing rdayofweek function for Informix compatibility.
1503+
- Fixed fetch into char pointer.
14991504
- Set ecpg version to 3.0.0
15001505
- Set ecpg library to 4.0.0
15011506
- Set pgtypes library to 1.0.0

src/interfaces/ecpg/compatlib/informix.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,12 @@ rmdyjul (short mdy[3], Date *d)
343343
return 0;
344344
}
345345

346+
int
347+
rdayofweek(Date d)
348+
{
349+
return(PGTYPESdate_dayofweek(d));
350+
}
351+
346352
/* And the datetime stuff */
347353

348354
void

src/interfaces/ecpg/ecpglib/data.c

Lines changed: 71 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/data.c,v 1.5 2003/06/15 04:07:58 momjian Exp $ */
1+
/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/data.c,v 1.6 2003/06/19 09:52:11 meskes Exp $ */
22

33
#define POSTGRES_ECPG_INTERNAL
44
#include "postgres_fe.h"
@@ -100,11 +100,11 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
100100
switch (type)
101101
{
102102
long res;
103-
unsigned long ures;
103+
unsigned long ures;
104104
double dres;
105-
char *scan_length;
106-
Numeric *nres;
107-
Date ddres;
105+
char *scan_length;
106+
Numeric *nres;
107+
Date ddres;
108108
Timestamp tres;
109109
Interval *ires;
110110

@@ -300,37 +300,45 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
300300
case ECPGt_char:
301301
case ECPGt_unsigned_char:
302302
{
303-
strncpy((char *) ((long) var + offset * act_tuple), pval, varcharsize);
304-
if (varcharsize && varcharsize < strlen(pval))
303+
if (varcharsize == 0)
304+
{
305+
strncpy((char *) ((long) var + offset * act_tuple), pval, strlen(pval));
306+
}
307+
else
305308
{
306-
/* truncation */
307-
switch (ind_type)
309+
strncpy((char *) ((long) var + offset * act_tuple), pval, varcharsize);
310+
311+
if (varcharsize < strlen(pval))
308312
{
309-
case ECPGt_short:
310-
case ECPGt_unsigned_short:
311-
/* ((short *) ind)[act_tuple] = strlen(pval);*/
312-
*((short *) (ind + ind_offset * act_tuple)) = strlen(pval);
313-
break;
314-
case ECPGt_int:
315-
case ECPGt_unsigned_int:
316-
/* ((int *) ind)[act_tuple] = strlen(pval);*/
317-
*((int *) (ind + ind_offset * act_tuple)) = strlen(pval);
318-
break;
319-
case ECPGt_long:
320-
case ECPGt_unsigned_long:
321-
/* ((long *) ind)[act_tuple] = strlen(pval);*/
322-
*((long *) (ind + ind_offset * act_tuple)) = strlen(pval);
323-
break;
313+
/* truncation */
314+
switch (ind_type)
315+
{
316+
case ECPGt_short:
317+
case ECPGt_unsigned_short:
318+
/* ((short *) ind)[act_tuple] = strlen(pval);*/
319+
*((short *) (ind + ind_offset * act_tuple)) = strlen(pval);
320+
break;
321+
case ECPGt_int:
322+
case ECPGt_unsigned_int:
323+
/* ((int *) ind)[act_tuple] = strlen(pval);*/
324+
*((int *) (ind + ind_offset * act_tuple)) = strlen(pval);
325+
break;
326+
case ECPGt_long:
327+
case ECPGt_unsigned_long:
328+
/* ((long *) ind)[act_tuple] = strlen(pval);*/
329+
*((long *) (ind + ind_offset * act_tuple)) = strlen(pval);
330+
break;
324331
#ifdef HAVE_LONG_LONG_INT_64
325-
case ECPGt_long_long:
326-
case ECPGt_unsigned_long_long:
327-
*((long long int *) (ind + ind_offset * act_tuple)) = strlen(pval);
328-
break;
332+
case ECPGt_long_long:
333+
case ECPGt_unsigned_long_long:
334+
*((long long int *) (ind + ind_offset * act_tuple)) = strlen(pval);
335+
break;
329336
#endif /* HAVE_LONG_LONG_INT_64 */
330-
default:
331-
break;
337+
default:
338+
break;
339+
}
340+
sqlca->sqlwarn[0] = sqlca->sqlwarn[1] = 'W';
332341
}
333-
sqlca->sqlwarn[0] = sqlca->sqlwarn[1] = 'W';
334342
}
335343
}
336344
break;
@@ -342,42 +350,46 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
342350

343351
variable->len = strlen(pval);
344352
if (varcharsize == 0)
353+
{
345354
strncpy(variable->arr, pval, variable->len);
355+
}
346356
else
357+
{
347358
strncpy(variable->arr, pval, varcharsize);
348359

349-
if (varcharsize > 0 && variable->len > varcharsize)
350-
{
351-
/* truncation */
352-
switch (ind_type)
360+
if (variable->len > varcharsize)
353361
{
354-
case ECPGt_short:
355-
case ECPGt_unsigned_short:
356-
/* ((short *) ind)[act_tuple] = variable->len;*/
357-
*((short *) (ind + offset * act_tuple)) = variable->len;
358-
break;
359-
case ECPGt_int:
360-
case ECPGt_unsigned_int:
361-
/* ((int *) ind)[act_tuple] = variable->len;*/
362-
*((int *) (ind + offset * act_tuple)) = variable->len;
363-
break;
364-
case ECPGt_long:
365-
case ECPGt_unsigned_long:
366-
/* ((long *) ind)[act_tuple] = variable->len;*/
367-
*((long *) (ind + offset * act_tuple)) = variable->len;
368-
break;
362+
/* truncation */
363+
switch (ind_type)
364+
{
365+
case ECPGt_short:
366+
case ECPGt_unsigned_short:
367+
/* ((short *) ind)[act_tuple] = variable->len;*/
368+
*((short *) (ind + offset * act_tuple)) = variable->len;
369+
break;
370+
case ECPGt_int:
371+
case ECPGt_unsigned_int:
372+
/* ((int *) ind)[act_tuple] = variable->len;*/
373+
*((int *) (ind + offset * act_tuple)) = variable->len;
374+
break;
375+
case ECPGt_long:
376+
case ECPGt_unsigned_long:
377+
/* ((long *) ind)[act_tuple] = variable->len;*/
378+
*((long *) (ind + offset * act_tuple)) = variable->len;
379+
break;
369380
#ifdef HAVE_LONG_LONG_INT_64
370-
case ECPGt_long_long:
371-
case ECPGt_unsigned_long_long:
372-
*((long long int *) (ind + ind_offset * act_tuple)) = variable->len;
373-
break;
381+
case ECPGt_long_long:
382+
case ECPGt_unsigned_long_long:
383+
*((long long int *) (ind + ind_offset * act_tuple)) = variable->len;
384+
break;
374385
#endif /* HAVE_LONG_LONG_INT_64 */
375-
default:
376-
break;
377-
}
378-
sqlca->sqlwarn[0] = sqlca->sqlwarn[1] = 'W';
386+
default:
387+
break;
388+
}
389+
sqlca->sqlwarn[0] = sqlca->sqlwarn[1] = 'W';
379390

380-
variable->len = varcharsize;
391+
variable->len = varcharsize;
392+
}
381393
}
382394
}
383395
break;

src/interfaces/ecpg/pgtypeslib/Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#
55
# Copyright (c) 1994, Regents of the University of California
66
#
7-
# $Header: /cvsroot/pgsql/src/interfaces/ecpg/pgtypeslib/Makefile,v 1.7 2003/05/10 02:05:50 momjian Exp $
7+
# $Header: /cvsroot/pgsql/src/interfaces/ecpg/pgtypeslib/Makefile,v 1.8 2003/06/19 09:52:11 meskes Exp $
88
#
99
#-------------------------------------------------------------------------
1010

@@ -16,7 +16,7 @@ NAME= pgtypes
1616
SO_MAJOR_VERSION= 1
1717
SO_MINOR_VERSION= 0.0
1818

19-
override CPPFLAGS := -I$(top_srcdir)/src/interfaces/ecpg/include -I$(top_srcdir)/src/include/utils $(CPPFLAGS)
19+
override CPPFLAGS := -I$(top_srcdir)/src/interfaces/ecpg/include -I$(top_srcdir)/src/include/utils $(CPPFLAGS) -g
2020

2121
OBJS= numeric.o datetime.o common.o dt_common.o timestamp.o interval.o \
2222
$(filter rint.o, $(LIBOBJS))

src/interfaces/ecpg/preproc/preproc.y

Lines changed: 1 addition & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/Attic/preproc.y,v 1.233 2003/06/17 07:28:22 meskes Exp $ */
1+
/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/Attic/preproc.y,v 1.234 2003/06/19 09:52:11 meskes Exp $ */
22

33
/* Copyright comment */
44
%{
@@ -5048,30 +5048,6 @@ variable: opt_pointer ECPGColLabelCommon opt_array_bounds opt_initializer
50485048
$$ = cat_str(4, $1, mm_strdup($2), $3.str, $4);
50495049
break;
50505050

5051-
/*case ECPGt_numeric:
5052-
if (atoi(dimension) < 0)
5053-
type = ECPGmake_simple_type(actual_type[struct_level].type_enum, length);
5054-
else
5055-
type = ECPGmake_array_type(ECPGmake_simple_type(actual_type[struct_level].type_enum, length), dimension);
5056-
5057-
if (atoi(dimension) < 0)
5058-
$$ = cat_str(4, mm_strdup(actual_storage[struct_level]), make_str("Numeric"), mm_strdup($2), $4);
5059-
else
5060-
$$ = cat_str(5, mm_strdup(actual_storage[struct_level]), make_str("Numeric"), mm_strdup($2), mm_strdup(dim), $4);
5061-
break;
5062-
5063-
case ECPGt_interval:
5064-
if (atoi(dimension) < 0)
5065-
type = ECPGmake_simple_type(actual_type[struct_level].type_enum, length);
5066-
else
5067-
type = ECPGmake_array_type(ECPGmake_simple_type(actual_type[struct_level].type_enum, length), dimension);
5068-
5069-
if (atoi(dimension) < 0)
5070-
$$ = cat_str(4, mm_strdup(actual_storage[struct_level]), make_str("Interval"), mm_strdup($2), $4);
5071-
else
5072-
$$ = cat_str(5, mm_strdup(actual_storage[struct_level]), make_str("Interval"), mm_strdup($2), mm_strdup(dim), $4);
5073-
break;*/
5074-
50755051
default:
50765052
if (atoi(dimension) < 0)
50775053
type = ECPGmake_simple_type(actual_type[struct_level].type_enum, make_str("1"));

0 commit comments

Comments
 (0)