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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy