Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
bb373089
Commit
bb373089
authored
Mar 16, 2003
by
Michael Meskes
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Forgot some files...
parent
a4f25b6a
Changes
14
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
51 additions
and
3392 deletions
+51
-3392
src/interfaces/ecpg/include/pgtypes_error.h
src/interfaces/ecpg/include/pgtypes_error.h
+3
-0
src/interfaces/ecpg/include/pgtypes_numeric.h
src/interfaces/ecpg/include/pgtypes_numeric.h
+48
-0
src/interfaces/ecpg/lib/Makefile
src/interfaces/ecpg/lib/Makefile
+0
-47
src/interfaces/ecpg/lib/connect.c
src/interfaces/ecpg/lib/connect.c
+0
-495
src/interfaces/ecpg/lib/data.c
src/interfaces/ecpg/lib/data.c
+0
-398
src/interfaces/ecpg/lib/descriptor.c
src/interfaces/ecpg/lib/descriptor.c
+0
-449
src/interfaces/ecpg/lib/error.c
src/interfaces/ecpg/lib/error.c
+0
-198
src/interfaces/ecpg/lib/execute.c
src/interfaces/ecpg/lib/execute.c
+0
-1143
src/interfaces/ecpg/lib/extern.h
src/interfaces/ecpg/lib/extern.h
+0
-102
src/interfaces/ecpg/lib/memory.c
src/interfaces/ecpg/lib/memory.c
+0
-95
src/interfaces/ecpg/lib/misc.c
src/interfaces/ecpg/lib/misc.c
+0
-149
src/interfaces/ecpg/lib/pg_type.h
src/interfaces/ecpg/lib/pg_type.h
+0
-73
src/interfaces/ecpg/lib/prepare.c
src/interfaces/ecpg/lib/prepare.c
+0
-155
src/interfaces/ecpg/lib/typename.c
src/interfaces/ecpg/lib/typename.c
+0
-88
No files found.
src/interfaces/ecpg/include/pgtypes_error.h
0 → 100644
View file @
bb373089
#define PGTYPES_OVERFLOW 201
#define PGTYPES_BAD_NUMERIC 202
#define PGTYPES_DIVIDE_ZERO 203
src/interfaces/ecpg/include/pgtypes_numeric.h
0 → 100644
View file @
bb373089
#ifndef PGTYPES_NUMERIC
#define PGTYPES_NUMERIC
typedef
unsigned
char
NumericDigit
;
typedef
struct
NumericVar
{
int
ndigits
;
/* number of digits in digits[] - can be 0! */
int
weight
;
/* weight of first digit */
int
rscale
;
/* result scale */
int
dscale
;
/* display scale */
int
sign
;
/* NUMERIC_POS, NUMERIC_NEG, or NUMERIC_NAN */
NumericDigit
*
buf
;
/* start of alloc'd space for digits[] */
NumericDigit
*
digits
;
/* decimal digits */
}
NumericVar
;
NumericVar
*
PGTYPESnew
(
void
);
void
PGTYPESnumeric_free
(
NumericVar
*
);
NumericVar
*
PGTYPESnumeric_aton
(
char
*
,
char
**
);
char
*
PGTYPESnumeric_ntoa
(
NumericVar
*
);
int
PGTYPESnumeric_add
(
NumericVar
*
,
NumericVar
*
,
NumericVar
*
);
int
PGTYPESnumeric_sub
(
NumericVar
*
,
NumericVar
*
,
NumericVar
*
);
int
PGTYPESnumeric_mul
(
NumericVar
*
,
NumericVar
*
,
NumericVar
*
);
int
PGTYPESnumeric_div
(
NumericVar
*
,
NumericVar
*
,
NumericVar
*
);
int
PGTYPESnumeric_cmp
(
NumericVar
*
,
NumericVar
*
);
int
PGTYPESnumeric_iton
(
signed
int
,
NumericVar
*
);
int
PGTYPESnumeric_lton
(
signed
long
int
,
NumericVar
*
);
int
PGTYPESnumeric_copy
(
NumericVar
*
,
NumericVar
*
);
int
PGTYPESnumeric_dton
(
double
,
NumericVar
*
);
int
PGTYPESnumeric_ntod
(
NumericVar
*
,
double
*
);
int
PGTYPESnumeric_ntoi
(
NumericVar
*
,
int
*
);
int
PGTYPESnumeric_ntol
(
NumericVar
*
,
long
*
);
int
decadd
(
NumericVar
*
,
NumericVar
*
,
NumericVar
*
);
int
deccmp
(
NumericVar
*
,
NumericVar
*
);
void
deccopy
(
NumericVar
*
,
NumericVar
*
);
int
deccvasc
(
char
*
,
int
,
NumericVar
*
);
int
deccvdbl
(
double
,
NumericVar
*
);
int
deccvint
(
int
,
NumericVar
*
);
int
deccvlong
(
long
,
NumericVar
*
);
int
decdiv
(
NumericVar
*
,
NumericVar
*
,
NumericVar
*
);
int
decmul
(
NumericVar
*
,
NumericVar
*
,
NumericVar
*
);
int
decsub
(
NumericVar
*
,
NumericVar
*
,
NumericVar
*
);
int
dectoasc
(
NumericVar
*
,
char
*
,
int
,
int
);
int
dectodbl
(
NumericVar
*
,
double
*
);
int
dectoint
(
NumericVar
*
,
int
*
);
int
dectolong
(
NumericVar
*
,
long
*
);
#endif
/* PGTYPES_NUMERIC */
src/interfaces/ecpg/lib/Makefile
deleted
100644 → 0
View file @
a4f25b6a
#-------------------------------------------------------------------------
#
# Makefile for ecpg library
#
# Copyright (c) 1994, Regents of the University of California
#
# $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/Makefile,v 1.19 2003/02/13 13:11:52 meskes Exp $
#
#-------------------------------------------------------------------------
subdir
=
src/interfaces/ecpg/lib
top_builddir
=
../../../..
include
$(top_builddir)/src/Makefile.global
NAME
=
ecpg
SO_MAJOR_VERSION
=
3
SO_MINOR_VERSION
=
4.2
override CPPFLAGS
:
= -g -I$(top_srcdir)/src/interfaces/ecpg/include -I$(libpq_srcdir) $(CPPFLAGS)
OBJS
=
execute.o typename.o descriptor.o data.o error.o prepare.o memory.o
\
connect.o misc.o
SHLIB_LINK
=
$(libpq)
all
:
all-lib
# Shared library stuff
include
$(top_srcdir)/src/Makefile.shlib
install
:
all installdirs install-lib
installdirs
:
$(mkinstalldirs)
$(DESTDIR)$(libdir)
uninstall
:
uninstall-lib
clean distclean maintainer-clean
:
clean-lib
rm
-f
$(OBJS)
depend dep
:
$(CC)
-MM
$(CFLAGS)
*
.c
>
depend
ifeq
(depend,$(wildcard depend))
include
depend
endif
src/interfaces/ecpg/lib/connect.c
deleted
100644 → 0
View file @
a4f25b6a
This diff is collapsed.
Click to expand it.
src/interfaces/ecpg/lib/data.c
deleted
100644 → 0
View file @
a4f25b6a
This diff is collapsed.
Click to expand it.
src/interfaces/ecpg/lib/descriptor.c
deleted
100644 → 0
View file @
a4f25b6a
This diff is collapsed.
Click to expand it.
src/interfaces/ecpg/lib/error.c
deleted
100644 → 0
View file @
a4f25b6a
/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/error.c,v 1.19 2003/02/14 13:17:13 meskes Exp $ */
#include "postgres_fe.h"
#include <stdio.h>
#include "ecpgerrno.h"
#include "ecpgtype.h"
#include "ecpglib.h"
#include "extern.h"
#include "sqlca.h"
/* This should hold the back-end error message from
* the last back-end operation. */
static
char
*
ECPGerr
;
void
ECPGraise
(
int
line
,
int
code
,
const
char
*
str
)
{
sqlca
.
sqlcode
=
code
;
switch
(
code
)
{
case
ECPG_NOT_FOUND
:
snprintf
(
sqlca
.
sqlerrm
.
sqlerrmc
,
sizeof
(
sqlca
.
sqlerrm
.
sqlerrmc
),
"No data found in line %d."
,
line
);
break
;
case
ECPG_OUT_OF_MEMORY
:
snprintf
(
sqlca
.
sqlerrm
.
sqlerrmc
,
sizeof
(
sqlca
.
sqlerrm
.
sqlerrmc
),
"Out of memory in line %d."
,
line
);
break
;
case
ECPG_UNSUPPORTED
:
snprintf
(
sqlca
.
sqlerrm
.
sqlerrmc
,
sizeof
(
sqlca
.
sqlerrm
.
sqlerrmc
),
"Unsupported type %s in line %d."
,
str
,
line
);
break
;
case
ECPG_TOO_MANY_ARGUMENTS
:
snprintf
(
sqlca
.
sqlerrm
.
sqlerrmc
,
sizeof
(
sqlca
.
sqlerrm
.
sqlerrmc
),
"Too many arguments in line %d."
,
line
);
break
;
case
ECPG_TOO_FEW_ARGUMENTS
:
snprintf
(
sqlca
.
sqlerrm
.
sqlerrmc
,
sizeof
(
sqlca
.
sqlerrm
.
sqlerrmc
),
"Too few arguments in line %d."
,
line
);
break
;
case
ECPG_INT_FORMAT
:
snprintf
(
sqlca
.
sqlerrm
.
sqlerrmc
,
sizeof
(
sqlca
.
sqlerrm
.
sqlerrmc
),
"Not correctly formatted int type: %s line %d."
,
str
,
line
);
break
;
case
ECPG_UINT_FORMAT
:
snprintf
(
sqlca
.
sqlerrm
.
sqlerrmc
,
sizeof
(
sqlca
.
sqlerrm
.
sqlerrmc
),
"Not correctly formatted unsigned type: %s in line %d."
,
str
,
line
);
break
;
case
ECPG_FLOAT_FORMAT
:
snprintf
(
sqlca
.
sqlerrm
.
sqlerrmc
,
sizeof
(
sqlca
.
sqlerrm
.
sqlerrmc
),
"Not correctly formatted floating-point type: %s in line %d."
,
str
,
line
);
break
;
case
ECPG_CONVERT_BOOL
:
snprintf
(
sqlca
.
sqlerrm
.
sqlerrmc
,
sizeof
(
sqlca
.
sqlerrm
.
sqlerrmc
),
"Unable to convert %s to bool on line %d."
,
str
,
line
);
break
;
case
ECPG_EMPTY
:
snprintf
(
sqlca
.
sqlerrm
.
sqlerrmc
,
sizeof
(
sqlca
.
sqlerrm
.
sqlerrmc
),
"Empty query in line %d."
,
line
);
break
;
case
ECPG_MISSING_INDICATOR
:
snprintf
(
sqlca
.
sqlerrm
.
sqlerrmc
,
sizeof
(
sqlca
.
sqlerrm
.
sqlerrmc
),
"NULL value without indicator in line %d."
,
line
);
break
;
case
ECPG_NO_ARRAY
:
snprintf
(
sqlca
.
sqlerrm
.
sqlerrmc
,
sizeof
(
sqlca
.
sqlerrm
.
sqlerrmc
),
"Variable is not an array in line %d."
,
line
);
break
;
case
ECPG_DATA_NOT_ARRAY
:
snprintf
(
sqlca
.
sqlerrm
.
sqlerrmc
,
sizeof
(
sqlca
.
sqlerrm
.
sqlerrmc
),
"Data read from backend is not an array in line %d."
,
line
);
break
;
case
ECPG_ARRAY_INSERT
:
snprintf
(
sqlca
.
sqlerrm
.
sqlerrmc
,
sizeof
(
sqlca
.
sqlerrm
.
sqlerrmc
),
"Trying to insert an array of variables in line %d."
,
line
);
break
;
case
ECPG_NO_CONN
:
snprintf
(
sqlca
.
sqlerrm
.
sqlerrmc
,
sizeof
(
sqlca
.
sqlerrm
.
sqlerrmc
),
"No such connection %s in line %d."
,
str
,
line
);
break
;
case
ECPG_NOT_CONN
:
snprintf
(
sqlca
.
sqlerrm
.
sqlerrmc
,
sizeof
(
sqlca
.
sqlerrm
.
sqlerrmc
),
"Not connected to '%s' in line %d."
,
str
,
line
);
break
;
case
ECPG_INVALID_STMT
:
snprintf
(
sqlca
.
sqlerrm
.
sqlerrmc
,
sizeof
(
sqlca
.
sqlerrm
.
sqlerrmc
),
"Invalid statement name %s in line %d."
,
str
,
line
);
break
;
case
ECPG_UNKNOWN_DESCRIPTOR
:
snprintf
(
sqlca
.
sqlerrm
.
sqlerrmc
,
sizeof
(
sqlca
.
sqlerrm
.
sqlerrmc
),
"Descriptor %s not found in line %d."
,
str
,
line
);
break
;
case
ECPG_INVALID_DESCRIPTOR_INDEX
:
snprintf
(
sqlca
.
sqlerrm
.
sqlerrmc
,
sizeof
(
sqlca
.
sqlerrm
.
sqlerrmc
),
"Descriptor index out of range in line %d."
,
line
);
break
;
case
ECPG_UNKNOWN_DESCRIPTOR_ITEM
:
snprintf
(
sqlca
.
sqlerrm
.
sqlerrmc
,
sizeof
(
sqlca
.
sqlerrm
.
sqlerrmc
),
"Unknown descriptor item %s in line %d."
,
str
,
line
);
break
;
case
ECPG_VAR_NOT_NUMERIC
:
snprintf
(
sqlca
.
sqlerrm
.
sqlerrmc
,
sizeof
(
sqlca
.
sqlerrm
.
sqlerrmc
),
"Variable is not a numeric type in line %d."
,
line
);
break
;
case
ECPG_VAR_NOT_CHAR
:
snprintf
(
sqlca
.
sqlerrm
.
sqlerrmc
,
sizeof
(
sqlca
.
sqlerrm
.
sqlerrmc
),
"Variable is not a character type in line %d."
,
line
);
break
;
case
ECPG_PGSQL
:
{
int
slen
=
strlen
(
str
);
/* strip trailing newline */
if
(
slen
>
0
&&
str
[
slen
-
1
]
==
'\n'
)
slen
--
;
snprintf
(
sqlca
.
sqlerrm
.
sqlerrmc
,
sizeof
(
sqlca
.
sqlerrm
.
sqlerrmc
),
"'%.*s' in line %d."
,
slen
,
str
,
line
);
break
;
}
case
ECPG_TRANS
:
snprintf
(
sqlca
.
sqlerrm
.
sqlerrmc
,
sizeof
(
sqlca
.
sqlerrm
.
sqlerrmc
),
"Error in transaction processing in line %d."
,
line
);
break
;
case
ECPG_CONNECT
:
snprintf
(
sqlca
.
sqlerrm
.
sqlerrmc
,
sizeof
(
sqlca
.
sqlerrm
.
sqlerrmc
),
"Could not connect to database %s in line %d."
,
str
,
line
);
break
;
default:
snprintf
(
sqlca
.
sqlerrm
.
sqlerrmc
,
sizeof
(
sqlca
.
sqlerrm
.
sqlerrmc
),
"SQL error #%d in line %d."
,
code
,
line
);
break
;
}
sqlca
.
sqlerrm
.
sqlerrml
=
strlen
(
sqlca
.
sqlerrm
.
sqlerrmc
);
ECPGlog
(
"raising sqlcode %d in line %d, '%s'.
\n
"
,
code
,
line
,
sqlca
.
sqlerrm
.
sqlerrmc
);
/* free all memory we have allocated for the user */
ECPGfree_auto_mem
();
}
/* Set the error message string from the backend */
void
set_backend_err
(
const
char
*
err
,
int
lineno
)
{
if
(
ECPGerr
)
ECPGfree
(
ECPGerr
);
if
(
!
err
)
{
ECPGerr
=
NULL
;
return
;
}
ECPGerr
=
ECPGstrdup
(
err
,
lineno
);
}
/* Retrieve the error message from the backend. */
char
*
ECPGerrmsg
(
void
)
{
return
ECPGerr
;
}
/* print out an error message */
void
sqlprint
(
void
)
{
sqlca
.
sqlerrm
.
sqlerrmc
[
sqlca
.
sqlerrm
.
sqlerrml
]
=
'\0'
;
fprintf
(
stderr
,
"sql error %s
\n
"
,
sqlca
.
sqlerrm
.
sqlerrmc
);
}
src/interfaces/ecpg/lib/execute.c
deleted
100644 → 0
View file @
a4f25b6a
This diff is collapsed.
Click to expand it.
src/interfaces/ecpg/lib/extern.h
deleted
100644 → 0
View file @
a4f25b6a
#ifndef _ECPG_LIB_EXTERN_H
#define _ECPG_LIB_EXTERN_H
#include "postgres_fe.h"
#include "libpq-fe.h"
/* Here are some methods used by the lib. */
/* Stores the backend error message for client access */
void
set_backend_err
(
const
char
*
err
,
int
lineon
);
/* Store and retrieve the backend error message for client access */
void
set_backend_err
(
const
char
*
err
,
int
lineon
);
char
*
ECPGerrmsg
(
void
);
/* Returns a pointer to a string containing a simple type name. */
void
ECPGadd_mem
(
void
*
ptr
,
int
lineno
);
bool
ECPGget_data
(
const
PGresult
*
,
int
,
int
,
int
,
enum
ECPGttype
type
,
enum
ECPGttype
,
char
*
,
char
*
,
long
,
long
,
long
,
bool
);
struct
connection
*
ECPGget_connection
(
const
char
*
);
void
ECPGinit_sqlca
(
void
);
char
*
ECPGalloc
(
long
,
int
);
void
ECPGfree
(
void
*
);
bool
ECPGinit
(
const
struct
connection
*
,
const
char
*
,
const
int
);
char
*
ECPGstrdup
(
const
char
*
,
int
);
const
char
*
ECPGtype_name
(
enum
ECPGttype
);
unsigned
int
ECPGDynamicType
(
Oid
);
void
ECPGfree_auto_mem
(
void
);
void
ECPGclear_auto_mem
(
void
);
/* A generic varchar type. */
struct
ECPGgeneric_varchar
{
int
len
;
char
arr
[
1
];
};
/*
* type information cache
*/
struct
ECPGtype_information_cache
{
struct
ECPGtype_information_cache
*
next
;
int
oid
;
bool
isarray
;
};
/* structure to store one statement */
struct
statement
{
int
lineno
;
char
*
command
;
struct
connection
*
connection
;
struct
variable
*
inlist
;
struct
variable
*
outlist
;
};
/* structure to store connections */
struct
connection
{
char
*
name
;
PGconn
*
connection
;
bool
committed
;
int
autocommit
;
struct
ECPGtype_information_cache
*
cache_head
;
struct
connection
*
next
;
};
/* structure to store descriptors */
struct
descriptor
{
char
*
name
;
PGresult
*
result
;
struct
descriptor
*
next
;
};
struct
variable
{
enum
ECPGttype
type
;
void
*
value
;
void
*
pointer
;
long
varcharsize
;
long
arrsize
;
long
offset
;
enum
ECPGttype
ind_type
;
void
*
ind_value
;
void
*
ind_pointer
;
long
ind_varcharsize
;
long
ind_arrsize
;
long
ind_offset
;
struct
variable
*
next
;
};
PGresult
**
ECPGdescriptor_lvalue
(
int
line
,
const
char
*
descriptor
);
bool
ECPGstore_result
(
const
PGresult
*
results
,
int
act_field
,
const
struct
statement
*
stmt
,
struct
variable
*
var
);
#endif
/* _ECPG_LIB_EXTERN_H */
src/interfaces/ecpg/lib/memory.c
deleted
100644 → 0
View file @
a4f25b6a
/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/memory.c,v 1.9 2002/09/04 20:31:46 momjian Exp $ */
#include "postgres_fe.h"
#include "ecpgtype.h"
#include "ecpglib.h"
#include "ecpgerrno.h"
#include "extern.h"
void
ECPGfree
(
void
*
ptr
)
{
free
(
ptr
);
}
char
*
ECPGalloc
(
long
size
,
int
lineno
)
{
char
*
new
=
(
char
*
)
calloc
(
1L
,
size
);
if
(
!
new
)
{
ECPGraise
(
lineno
,
ECPG_OUT_OF_MEMORY
,
NULL
);
return
NULL
;
}
memset
(
new
,
'\0'
,
size
);
return
(
new
);
}
char
*
ECPGstrdup
(
const
char
*
string
,
int
lineno
)
{
char
*
new
=
strdup
(
string
);
if
(
!
new
)
{
ECPGraise
(
lineno
,
ECPG_OUT_OF_MEMORY
,
NULL
);
return
NULL
;
}
return
(
new
);
}
/* keep a list of memory we allocated for the user */
static
struct
auto_mem
{
void
*
pointer
;
struct
auto_mem
*
next
;
}
*
auto_allocs
=
NULL
;
void
ECPGadd_mem
(
void
*
ptr
,
int
lineno
)
{
struct
auto_mem
*
am
=
(
struct
auto_mem
*
)
ECPGalloc
(
sizeof
(
struct
auto_mem
),
lineno
);
am
->
pointer
=
ptr
;
am
->
next
=
auto_allocs
;
auto_allocs
=
am
;
}
void
ECPGfree_auto_mem
(
void
)
{
struct
auto_mem
*
am
;
/* free all memory we have allocated for the user */
for
(
am
=
auto_allocs
;
am
;)
{
struct
auto_mem
*
act
=
am
;
am
=
am
->
next
;
ECPGfree
(
act
->
pointer
);
ECPGfree
(
act
);
}
auto_allocs
=
NULL
;
}
void
ECPGclear_auto_mem
(
void
)
{
struct
auto_mem
*
am
;
/* free just our own structure */
for
(
am
=
auto_allocs
;
am
;)
{
struct
auto_mem
*
act
=
am
;
am
=
am
->
next
;
ECPGfree
(
act
);
}
auto_allocs
=
NULL
;
}
src/interfaces/ecpg/lib/misc.c
deleted
100644 → 0
View file @
a4f25b6a
/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/misc.c,v 1.13 2002/09/04 20:31:46 momjian Exp $ */
#include "postgres_fe.h"
#include <unistd.h>
#include "ecpgtype.h"
#include "ecpglib.h"
#include "ecpgerrno.h"
#include "extern.h"
#include "sqlca.h"
static
struct
sqlca
sqlca_init
=
{
{
'S'
,
'Q'
,
'L'
,
'C'
,
'A'
,
' '
,
' '
,
' '
},
sizeof
(
struct
sqlca
),
0
,
{
0
,
{
0
}
},
{
'N'
,
'O'
,
'T'
,
' '
,
'S'
,
'E'
,
'T'
,
' '
},
{
0
,
0
,
0
,
0
,
0
,
0
},
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
},
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
}
};
static
int
simple_debug
=
0
;
static
FILE
*
debugstream
=
NULL
;
void
ECPGinit_sqlca
(
void
)
{
memcpy
((
char
*
)
&
sqlca
,
(
char
*
)
&
sqlca_init
,
sizeof
(
sqlca
));
}
bool
ECPGinit
(
const
struct
connection
*
con
,
const
char
*
connection_name
,
const
int
lineno
)
{
ECPGinit_sqlca
();
if
(
con
==
NULL
)
{
ECPGraise
(
lineno
,
ECPG_NO_CONN
,
connection_name
?
connection_name
:
"NULL"
);
return
(
false
);
}
return
(
true
);
}
bool
ECPGstatus
(
int
lineno
,
const
char
*
connection_name
)
{
struct
connection
*
con
=
ECPGget_connection
(
connection_name
);
if
(
!
ECPGinit
(
con
,
connection_name
,
lineno
))
return
(
false
);
/* are we connected? */
if
(
con
->
connection
==
NULL
)
{
ECPGraise
(
lineno
,
ECPG_NOT_CONN
,
con
->
name
);
return
false
;
}
return
(
true
);
}
bool
ECPGtrans
(
int
lineno
,
const
char
*
connection_name
,
const
char
*
transaction
)
{
PGresult
*
res
;
struct
connection
*
con
=
ECPGget_connection
(
connection_name
);
if
(
!
ECPGinit
(
con
,
connection_name
,
lineno
))
return
(
false
);
ECPGlog
(
"ECPGtrans line %d action = %s connection = %s
\n
"
,
lineno
,
transaction
,
con
->
name
);
/* if we have no connection we just simulate the command */
if
(
con
&&
con
->
connection
)
{
/*
* if we are not in autocommit mode, already have committed the
* transaction and get another commit, just ignore it
*/
if
(
!
con
->
committed
||
con
->
autocommit
)
{
if
((
res
=
PQexec
(
con
->
connection
,
transaction
))
==
NULL
)
{
ECPGraise
(
lineno
,
ECPG_TRANS
,
NULL
);
return
FALSE
;
}
PQclear
(
res
);
}
}
if
(
strcmp
(
transaction
,
"commit"
)
==
0
||
strcmp
(
transaction
,
"rollback"
)
==
0
)
{
con
->
committed
=
true
;
/* deallocate all prepared statements */
if
(
!
ECPGdeallocate_all
(
lineno
))
return
false
;
}
return
true
;
}
void
ECPGdebug
(
int
n
,
FILE
*
dbgs
)
{
simple_debug
=
n
;
debugstream
=
dbgs
;
ECPGlog
(
"ECPGdebug: set to %d
\n
"
,
simple_debug
);
}
void
ECPGlog
(
const
char
*
format
,...)
{
va_list
ap
;
if
(
simple_debug
)
{
char
*
f
=
(
char
*
)
malloc
(
strlen
(
format
)
+
100
);
if
(
!
f
)
return
;
sprintf
(
f
,
"[%d]: %s"
,
(
int
)
getpid
(),
format
);
va_start
(
ap
,
format
);
vfprintf
(
debugstream
,
f
,
ap
);
va_end
(
ap
);
ECPGfree
(
f
);
}
}
src/interfaces/ecpg/lib/pg_type.h
deleted
100644 → 0
View file @
a4f25b6a
/*-------------------------------------------------------------------------
*
* pg_type.h
* definition of the system "type" relation (pg_type)
* along with the relation's initial contents.
*
*
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: pg_type.h,v 1.7 2002/06/20 20:29:53 momjian Exp $
*
* NOTES
* the genbki.sh script reads this file and generates .bki
* information from the DATA() statements.
*
*-------------------------------------------------------------------------
*/
#ifndef PG_TYPE_H
#define PG_TYPE_H
/* ----------------
* initial contents of pg_type
* ----------------
*/
/* keep the following ordered by OID so that later changes can be made easier*/
/* OIDS 1 - 99 */
#define BOOLOID 16
#define BYTEAOID 17
#define CHAROID 18
#define NAMEOID 19
#define INT8OID 20
#define INT2OID 21
#define INT2VECTOROID 22
#define INT4OID 23
#define REGPROCOID 24
#define TEXTOID 25
#define OIDOID 26
#define TIDOID 27
#define XIDOID 28
#define CIDOID 29
#define OIDVECTOROID 30
#define POINTOID 600
#define LSEGOID 601
#define PATHOID 602
#define BOXOID 603
#define POLYGONOID 604
#define LINEOID 628
#define FLOAT4OID 700
#define FLOAT8OID 701
#define ABSTIMEOID 702
#define RELTIMEOID 703
#define TINTERVALOID 704
#define UNKNOWNOID 705
#define CIRCLEOID 718
#define CASHOID 790
#define INETOID 869
#define CIDROID 650
#define BPCHAROID 1042
#define VARCHAROID 1043
#define DATEOID 1082
#define TIMEOID 1083
#define TIMESTAMPOID 1114
#define TIMESTAMPTZOID 1184
#define INTERVALOID 1186
#define TIMETZOID 1266
#define ZPBITOID 1560
#define VARBITOID 1562
#define NUMERICOID 1700
#endif
/* PG_TYPE_H */
src/interfaces/ecpg/lib/prepare.c
deleted
100644 → 0
View file @
a4f25b6a
/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/prepare.c,v 1.12 2001/12/23 12:17:41 meskes Exp $ */
#include "postgres_fe.h"
#include <ctype.h>
#include "ecpgtype.h"
#include "ecpglib.h"
#include "ecpgerrno.h"
#include "extern.h"
#include "sqlca.h"
static
struct
prepared_statement
{
char
*
name
;
struct
statement
*
stmt
;
struct
prepared_statement
*
next
;
}
*
prep_stmts
=
NULL
;
static
bool
isvarchar
(
unsigned
char
c
)
{
if
(
isalnum
(
c
))
return
true
;
if
(
c
==
'_'
||
c
==
'>'
||
c
==
'-'
||
c
==
'.'
)
return
true
;
if
(
c
>=
128
)
return
true
;
return
(
false
);
}
static
void
replace_variables
(
char
*
text
)
{
char
*
ptr
=
text
;
bool
string
=
false
;
for
(;
*
ptr
!=
'\0'
;
ptr
++
)
{
if
(
*
ptr
==
'\''
)
string
=
string
?
false
:
true
;
if
(
!
string
&&
*
ptr
==
':'
)
{
*
ptr
=
'?'
;
for
(
++
ptr
;
*
ptr
&&
isvarchar
(
*
ptr
);
ptr
++
)
*
ptr
=
' '
;
}
}
}
/* handle the EXEC SQL PREPARE statement */
bool
ECPGprepare
(
int
lineno
,
char
*
name
,
char
*
variable
)
{
struct
statement
*
stmt
;
struct
prepared_statement
*
this
;
/* check if we already have prepared this statement */
for
(
this
=
prep_stmts
;
this
!=
NULL
&&
strcmp
(
this
->
name
,
name
)
!=
0
;
this
=
this
->
next
);
if
(
this
)
{
bool
b
=
ECPGdeallocate
(
lineno
,
name
);
if
(
!
b
)
return
false
;
}
this
=
(
struct
prepared_statement
*
)
ECPGalloc
(
sizeof
(
struct
prepared_statement
),
lineno
);
if
(
!
this
)
return
false
;
stmt
=
(
struct
statement
*
)
ECPGalloc
(
sizeof
(
struct
statement
),
lineno
);
if
(
!
stmt
)
{
ECPGfree
(
this
);
return
false
;
}
/* create statement */
stmt
->
lineno
=
lineno
;
stmt
->
connection
=
NULL
;
stmt
->
command
=
ECPGstrdup
(
variable
,
lineno
);
stmt
->
inlist
=
stmt
->
outlist
=
NULL
;
/* if we have C variables in our statment replace them with '?' */
replace_variables
(
stmt
->
command
);
/* add prepared statement to our list */
this
->
name
=
ECPGstrdup
(
name
,
lineno
);
this
->
stmt
=
stmt
;
if
(
prep_stmts
==
NULL
)
this
->
next
=
NULL
;
else
this
->
next
=
prep_stmts
;
prep_stmts
=
this
;
return
true
;
}
/* handle the EXEC SQL DEALLOCATE PREPARE statement */
bool
ECPGdeallocate
(
int
lineno
,
char
*
name
)
{
struct
prepared_statement
*
this
,
*
prev
;
/* check if we really have prepared this statement */
for
(
this
=
prep_stmts
,
prev
=
NULL
;
this
!=
NULL
&&
strcmp
(
this
->
name
,
name
)
!=
0
;
prev
=
this
,
this
=
this
->
next
);
if
(
this
)
{
/* okay, free all the resources */
ECPGfree
(
this
->
name
);
ECPGfree
(
this
->
stmt
->
command
);
ECPGfree
(
this
->
stmt
);
if
(
prev
!=
NULL
)
prev
->
next
=
this
->
next
;
else
prep_stmts
=
this
->
next
;
ECPGfree
(
this
);
return
true
;
}
ECPGraise
(
lineno
,
ECPG_INVALID_STMT
,
name
);
return
false
;
}
bool
ECPGdeallocate_all
(
int
lineno
)
{
/* deallocate all prepared statements */
while
(
prep_stmts
!=
NULL
)
{
bool
b
=
ECPGdeallocate
(
lineno
,
prep_stmts
->
name
);
if
(
!
b
)
return
false
;
}
return
true
;
}
/* return the prepared statement */
char
*
ECPGprepared_statement
(
char
*
name
)
{
struct
prepared_statement
*
this
;
for
(
this
=
prep_stmts
;
this
!=
NULL
&&
strcmp
(
this
->
name
,
name
)
!=
0
;
this
=
this
->
next
);
return
(
this
)
?
this
->
stmt
->
command
:
NULL
;
}
src/interfaces/ecpg/lib/typename.c
deleted
100644 → 0
View file @
a4f25b6a
/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/typename.c,v 1.21 2001/10/28 06:26:11 momjian Exp $ */
#include "postgres_fe.h"
#include <stdlib.h>
#include "ecpgtype.h"
#include "ecpglib.h"
#include "extern.h"
#include "sql3types.h"
#include "pg_type.h"
/*
* This function is used to generate the correct type names.
*/
const
char
*
ECPGtype_name
(
enum
ECPGttype
typ
)
{
switch
(
typ
)
{
case
ECPGt_char
:
return
"char"
;
case
ECPGt_unsigned_char
:
return
"unsigned char"
;
case
ECPGt_short
:
return
"short"
;
case
ECPGt_unsigned_short
:
return
"unsigned short"
;
case
ECPGt_int
:
return
"int"
;
case
ECPGt_unsigned_int
:
return
"unsigned int"
;
case
ECPGt_long
:
return
"long"
;
case
ECPGt_unsigned_long
:
return
"unsigned long"
;
case
ECPGt_long_long
:
return
"long long"
;
case
ECPGt_unsigned_long_long
:
return
"unsigned long long"
;
case
ECPGt_float
:
return
"float"
;
case
ECPGt_double
:
return
"double"
;
case
ECPGt_bool
:
return
"bool"
;
case
ECPGt_varchar
:
return
"varchar"
;
case
ECPGt_char_variable
:
return
"char"
;
default:
abort
();
}
return
NULL
;
}
unsigned
int
ECPGDynamicType
(
Oid
type
)
{
switch
(
type
)
{
case
BOOLOID
:
return
SQL3_BOOLEAN
;
/* bool */
case
INT2OID
:
return
SQL3_SMALLINT
;
/* int2 */
case
INT4OID
:
return
SQL3_INTEGER
;
/* int4 */
case
TEXTOID
:
return
SQL3_CHARACTER
;
/* text */
case
FLOAT4OID
:
return
SQL3_REAL
;
/* float4 */
case
FLOAT8OID
:
return
SQL3_DOUBLE_PRECISION
;
/* float8 */
case
BPCHAROID
:
return
SQL3_CHARACTER
;
/* bpchar */
case
VARCHAROID
:
return
SQL3_CHARACTER_VARYING
;
/* varchar */
case
DATEOID
:
return
SQL3_DATE_TIME_TIMESTAMP
;
/* date */
case
TIMEOID
:
return
SQL3_DATE_TIME_TIMESTAMP
;
/* time */
case
TIMESTAMPOID
:
return
SQL3_DATE_TIME_TIMESTAMP
;
/* datetime */
case
NUMERICOID
:
return
SQL3_NUMERIC
;
/* numeric */
default:
return
-
type
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment