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
0249c242
Commit
0249c242
authored
May 13, 2003
by
Tom Lane
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
More binary I/O routines.
parent
72f311b8
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
584 additions
and
25 deletions
+584
-25
src/backend/utils/adt/cash.c
src/backend/utils/adt/cash.c
+27
-1
src/backend/utils/adt/geo_ops.c
src/backend/utils/adt/geo_ops.c
+266
-1
src/backend/utils/adt/mac.c
src/backend/utils/adt/mac.c
+46
-1
src/backend/utils/adt/network.c
src/backend/utils/adt/network.c
+97
-1
src/backend/utils/adt/pseudotypes.c
src/backend/utils/adt/pseudotypes.c
+57
-2
src/include/catalog/catversion.h
src/include/catalog/catversion.h
+2
-2
src/include/catalog/pg_proc.h
src/include/catalog/pg_proc.h
+49
-1
src/include/catalog/pg_type.h
src/include/catalog/pg_type.h
+14
-14
src/include/utils/builtins.h
src/include/utils/builtins.h
+11
-1
src/include/utils/cash.h
src/include/utils/cash.h
+2
-0
src/include/utils/geo_decls.h
src/include/utils/geo_decls.h
+13
-1
No files found.
src/backend/utils/adt/cash.c
View file @
0249c242
...
...
@@ -9,7 +9,7 @@
* workings can be found in the book "Software Solutions in C" by
* Dale Schumacher, Academic Press, ISBN: 0-12-632360-7.
*
* $Header: /cvsroot/pgsql/src/backend/utils/adt/cash.c,v 1.5
7 2003/03/11 21:01:33
tgl Exp $
* $Header: /cvsroot/pgsql/src/backend/utils/adt/cash.c,v 1.5
8 2003/05/13 18:03:07
tgl Exp $
*/
#include "postgres.h"
...
...
@@ -19,6 +19,7 @@
#include <math.h>
#include <locale.h>
#include "libpq/pqformat.h"
#include "miscadmin.h"
#include "utils/builtins.h"
#include "utils/cash.h"
...
...
@@ -310,6 +311,31 @@ cash_out(PG_FUNCTION_ARGS)
PG_RETURN_CSTRING
(
result
);
}
/*
* cash_recv - converts external binary format to cash
*/
Datum
cash_recv
(
PG_FUNCTION_ARGS
)
{
StringInfo
buf
=
(
StringInfo
)
PG_GETARG_POINTER
(
0
);
PG_RETURN_CASH
((
Cash
)
pq_getmsgint
(
buf
,
sizeof
(
Cash
)));
}
/*
* cash_send - converts cash to binary format
*/
Datum
cash_send
(
PG_FUNCTION_ARGS
)
{
Cash
arg1
=
PG_GETARG_CASH
(
0
);
StringInfoData
buf
;
pq_begintypsend
(
&
buf
);
pq_sendint
(
&
buf
,
arg1
,
sizeof
(
Cash
));
PG_RETURN_BYTEA_P
(
pq_endtypsend
(
&
buf
));
}
Datum
cash_eq
(
PG_FUNCTION_ARGS
)
...
...
src/backend/utils/adt/geo_ops.c
View file @
0249c242
...
...
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/adt/geo_ops.c,v 1.7
6 2003/05/09 21:19:49
tgl Exp $
* $Header: /cvsroot/pgsql/src/backend/utils/adt/geo_ops.c,v 1.7
7 2003/05/13 18:03:07
tgl Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -409,6 +409,58 @@ box_out(PG_FUNCTION_ARGS)
PG_RETURN_CSTRING
(
path_encode
(
-
1
,
2
,
&
(
box
->
high
)));
}
/*
* box_recv - converts external binary format to box
*/
Datum
box_recv
(
PG_FUNCTION_ARGS
)
{
StringInfo
buf
=
(
StringInfo
)
PG_GETARG_POINTER
(
0
);
BOX
*
box
;
double
x
,
y
;
box
=
(
BOX
*
)
palloc
(
sizeof
(
BOX
));
box
->
high
.
x
=
pq_getmsgfloat8
(
buf
);
box
->
high
.
y
=
pq_getmsgfloat8
(
buf
);
box
->
low
.
x
=
pq_getmsgfloat8
(
buf
);
box
->
low
.
y
=
pq_getmsgfloat8
(
buf
);
/* reorder corners if necessary... */
if
(
box
->
high
.
x
<
box
->
low
.
x
)
{
x
=
box
->
high
.
x
;
box
->
high
.
x
=
box
->
low
.
x
;
box
->
low
.
x
=
x
;
}
if
(
box
->
high
.
y
<
box
->
low
.
y
)
{
y
=
box
->
high
.
y
;
box
->
high
.
y
=
box
->
low
.
y
;
box
->
low
.
y
=
y
;
}
PG_RETURN_BOX_P
(
box
);
}
/*
* box_send - converts box to binary format
*/
Datum
box_send
(
PG_FUNCTION_ARGS
)
{
BOX
*
box
=
PG_GETARG_BOX_P
(
0
);
StringInfoData
buf
;
pq_begintypsend
(
&
buf
);
pq_sendfloat8
(
&
buf
,
box
->
high
.
x
);
pq_sendfloat8
(
&
buf
,
box
->
high
.
y
);
pq_sendfloat8
(
&
buf
,
box
->
low
.
x
);
pq_sendfloat8
(
&
buf
,
box
->
low
.
y
);
PG_RETURN_BYTEA_P
(
pq_endtypsend
(
&
buf
));
}
/* box_construct - fill in a new box.
*/
...
...
@@ -915,6 +967,26 @@ line_out(PG_FUNCTION_ARGS)
PG_RETURN_CSTRING
(
result
);
}
/*
* line_recv - converts external binary format to line
*/
Datum
line_recv
(
PG_FUNCTION_ARGS
)
{
elog
(
ERROR
,
"line not yet implemented"
);
return
0
;
}
/*
* line_send - converts line to binary format
*/
Datum
line_send
(
PG_FUNCTION_ARGS
)
{
elog
(
ERROR
,
"line not yet implemented"
);
return
0
;
}
/*----------------------------------------------------------
* Conversion routines from one line formula to internal.
...
...
@@ -1271,6 +1343,64 @@ path_out(PG_FUNCTION_ARGS)
PG_RETURN_CSTRING
(
path_encode
(
path
->
closed
,
path
->
npts
,
path
->
p
));
}
/*
* path_recv - converts external binary format to path
*
* External representation is closed flag (a boolean byte), int32 number
* of points, and the points.
*/
Datum
path_recv
(
PG_FUNCTION_ARGS
)
{
StringInfo
buf
=
(
StringInfo
)
PG_GETARG_POINTER
(
0
);
PATH
*
path
;
int
closed
;
int32
npts
;
int32
i
;
int
size
;
closed
=
pq_getmsgbyte
(
buf
);
npts
=
pq_getmsgint
(
buf
,
sizeof
(
int32
));
if
(
npts
<
0
||
npts
>=
(
int32
)
(
INT_MAX
/
sizeof
(
Point
)))
elog
(
ERROR
,
"Invalid number of points in external path"
);
size
=
offsetof
(
PATH
,
p
[
0
])
+
sizeof
(
path
->
p
[
0
])
*
npts
;
path
=
(
PATH
*
)
palloc
(
size
);
path
->
size
=
size
;
path
->
npts
=
npts
;
path
->
closed
=
(
closed
?
1
:
0
);
for
(
i
=
0
;
i
<
npts
;
i
++
)
{
path
->
p
[
i
].
x
=
pq_getmsgfloat8
(
buf
);
path
->
p
[
i
].
y
=
pq_getmsgfloat8
(
buf
);
}
PG_RETURN_PATH_P
(
path
);
}
/*
* path_send - converts path to binary format
*/
Datum
path_send
(
PG_FUNCTION_ARGS
)
{
PATH
*
path
=
PG_GETARG_PATH_P
(
0
);
StringInfoData
buf
;
int32
i
;
pq_begintypsend
(
&
buf
);
pq_sendbyte
(
&
buf
,
path
->
closed
?
1
:
0
);
pq_sendint
(
&
buf
,
path
->
npts
,
sizeof
(
int32
));
for
(
i
=
0
;
i
<
path
->
npts
;
i
++
)
{
pq_sendfloat8
(
&
buf
,
path
->
p
[
i
].
x
);
pq_sendfloat8
(
&
buf
,
path
->
p
[
i
].
y
);
}
PG_RETURN_BYTEA_P
(
pq_endtypsend
(
&
buf
));
}
/*----------------------------------------------------------
* Relational operators.
...
...
@@ -1815,6 +1945,46 @@ lseg_out(PG_FUNCTION_ARGS)
PG_RETURN_CSTRING
(
path_encode
(
FALSE
,
2
,
(
Point
*
)
&
(
ls
->
p
[
0
])));
}
/*
* lseg_recv - converts external binary format to lseg
*/
Datum
lseg_recv
(
PG_FUNCTION_ARGS
)
{
StringInfo
buf
=
(
StringInfo
)
PG_GETARG_POINTER
(
0
);
LSEG
*
lseg
;
lseg
=
(
LSEG
*
)
palloc
(
sizeof
(
LSEG
));
lseg
->
p
[
0
].
x
=
pq_getmsgfloat8
(
buf
);
lseg
->
p
[
0
].
y
=
pq_getmsgfloat8
(
buf
);
lseg
->
p
[
1
].
x
=
pq_getmsgfloat8
(
buf
);
lseg
->
p
[
1
].
y
=
pq_getmsgfloat8
(
buf
);
#ifdef NOT_USED
lseg
->
m
=
point_sl
(
&
lseg
->
p
[
0
],
&
lseg
->
p
[
1
]);
#endif
PG_RETURN_LSEG_P
(
lseg
);
}
/*
* lseg_send - converts lseg to binary format
*/
Datum
lseg_send
(
PG_FUNCTION_ARGS
)
{
LSEG
*
ls
=
PG_GETARG_LSEG_P
(
0
);
StringInfoData
buf
;
pq_begintypsend
(
&
buf
);
pq_sendfloat8
(
&
buf
,
ls
->
p
[
0
].
x
);
pq_sendfloat8
(
&
buf
,
ls
->
p
[
0
].
y
);
pq_sendfloat8
(
&
buf
,
ls
->
p
[
1
].
x
);
pq_sendfloat8
(
&
buf
,
ls
->
p
[
1
].
y
);
PG_RETURN_BYTEA_P
(
pq_endtypsend
(
&
buf
));
}
/* lseg_construct -
* form a LSEG from two Points.
...
...
@@ -3186,6 +3356,64 @@ poly_out(PG_FUNCTION_ARGS)
PG_RETURN_CSTRING
(
path_encode
(
TRUE
,
poly
->
npts
,
poly
->
p
));
}
/*
* poly_recv - converts external binary format to polygon
*
* External representation is int32 number of points, and the points.
* We recompute the bounding box on read, instead of trusting it to
* be valid. (Checking it would take just as long, so may as well
* omit it from external representation.)
*/
Datum
poly_recv
(
PG_FUNCTION_ARGS
)
{
StringInfo
buf
=
(
StringInfo
)
PG_GETARG_POINTER
(
0
);
POLYGON
*
poly
;
int32
npts
;
int32
i
;
int
size
;
npts
=
pq_getmsgint
(
buf
,
sizeof
(
int32
));
if
(
npts
<
0
||
npts
>=
(
int32
)
((
INT_MAX
-
offsetof
(
POLYGON
,
p
[
0
]))
/
sizeof
(
Point
)))
elog
(
ERROR
,
"Invalid number of points in external polygon"
);
size
=
offsetof
(
POLYGON
,
p
[
0
])
+
sizeof
(
poly
->
p
[
0
])
*
npts
;
poly
=
(
POLYGON
*
)
palloc0
(
size
);
/* zero any holes */
poly
->
size
=
size
;
poly
->
npts
=
npts
;
for
(
i
=
0
;
i
<
npts
;
i
++
)
{
poly
->
p
[
i
].
x
=
pq_getmsgfloat8
(
buf
);
poly
->
p
[
i
].
y
=
pq_getmsgfloat8
(
buf
);
}
make_bound_box
(
poly
);
PG_RETURN_POLYGON_P
(
poly
);
}
/*
* poly_send - converts polygon to binary format
*/
Datum
poly_send
(
PG_FUNCTION_ARGS
)
{
POLYGON
*
poly
=
PG_GETARG_POLYGON_P
(
0
);
StringInfoData
buf
;
int32
i
;
pq_begintypsend
(
&
buf
);
pq_sendint
(
&
buf
,
poly
->
npts
,
sizeof
(
int32
));
for
(
i
=
0
;
i
<
poly
->
npts
;
i
++
)
{
pq_sendfloat8
(
&
buf
,
poly
->
p
[
i
].
x
);
pq_sendfloat8
(
&
buf
,
poly
->
p
[
i
].
y
);
}
PG_RETURN_BYTEA_P
(
pq_endtypsend
(
&
buf
));
}
/*-------------------------------------------------------
* Is polygon A strictly left of polygon B? i.e. is
...
...
@@ -4001,6 +4229,43 @@ circle_out(PG_FUNCTION_ARGS)
PG_RETURN_CSTRING
(
result
);
}
/*
* circle_recv - converts external binary format to circle
*/
Datum
circle_recv
(
PG_FUNCTION_ARGS
)
{
StringInfo
buf
=
(
StringInfo
)
PG_GETARG_POINTER
(
0
);
CIRCLE
*
circle
;
circle
=
(
CIRCLE
*
)
palloc
(
sizeof
(
CIRCLE
));
circle
->
center
.
x
=
pq_getmsgfloat8
(
buf
);
circle
->
center
.
y
=
pq_getmsgfloat8
(
buf
);
circle
->
radius
=
pq_getmsgfloat8
(
buf
);
if
(
circle
->
radius
<
0
)
elog
(
ERROR
,
"Invalid radius in external circle"
);
PG_RETURN_CIRCLE_P
(
circle
);
}
/*
* circle_send - converts circle to binary format
*/
Datum
circle_send
(
PG_FUNCTION_ARGS
)
{
CIRCLE
*
circle
=
PG_GETARG_CIRCLE_P
(
0
);
StringInfoData
buf
;
pq_begintypsend
(
&
buf
);
pq_sendfloat8
(
&
buf
,
circle
->
center
.
x
);
pq_sendfloat8
(
&
buf
,
circle
->
center
.
y
);
pq_sendfloat8
(
&
buf
,
circle
->
radius
);
PG_RETURN_BYTEA_P
(
pq_endtypsend
(
&
buf
));
}
/*----------------------------------------------------------
* Relational operators for CIRCLEs.
...
...
src/backend/utils/adt/mac.c
View file @
0249c242
/*
* PostgreSQL type definitions for MAC addresses.
*
* $Header: /cvsroot/pgsql/src/backend/utils/adt/mac.c,v 1.2
7 2002/10/13 15:39:1
7 tgl Exp $
* $Header: /cvsroot/pgsql/src/backend/utils/adt/mac.c,v 1.2
8 2003/05/13 18:03:0
7 tgl Exp $
*/
#include "postgres.h"
#include "access/hash.h"
#include "libpq/pqformat.h"
#include "utils/builtins.h"
#include "utils/inet.h"
/*
* Utility macros used for sorting and comparing:
*/
...
...
@@ -95,6 +97,49 @@ macaddr_out(PG_FUNCTION_ARGS)
PG_RETURN_CSTRING
(
result
);
}
/*
* macaddr_recv - converts external binary format to macaddr
*
* The external representation is just the six bytes, MSB first.
*/
Datum
macaddr_recv
(
PG_FUNCTION_ARGS
)
{
StringInfo
buf
=
(
StringInfo
)
PG_GETARG_POINTER
(
0
);
macaddr
*
addr
;
addr
=
(
macaddr
*
)
palloc
(
sizeof
(
macaddr
));
addr
->
a
=
pq_getmsgbyte
(
buf
);
addr
->
b
=
pq_getmsgbyte
(
buf
);
addr
->
c
=
pq_getmsgbyte
(
buf
);
addr
->
d
=
pq_getmsgbyte
(
buf
);
addr
->
e
=
pq_getmsgbyte
(
buf
);
addr
->
f
=
pq_getmsgbyte
(
buf
);
PG_RETURN_MACADDR_P
(
addr
);
}
/*
* macaddr_send - converts macaddr to binary format
*/
Datum
macaddr_send
(
PG_FUNCTION_ARGS
)
{
macaddr
*
addr
=
PG_GETARG_MACADDR_P
(
0
);
StringInfoData
buf
;
pq_begintypsend
(
&
buf
);
pq_sendbyte
(
&
buf
,
addr
->
a
);
pq_sendbyte
(
&
buf
,
addr
->
b
);
pq_sendbyte
(
&
buf
,
addr
->
c
);
pq_sendbyte
(
&
buf
,
addr
->
d
);
pq_sendbyte
(
&
buf
,
addr
->
e
);
pq_sendbyte
(
&
buf
,
addr
->
f
);
PG_RETURN_BYTEA_P
(
pq_endtypsend
(
&
buf
));
}
/*
* Convert macaddr to text data type.
*/
...
...
src/backend/utils/adt/network.c
View file @
0249c242
...
...
@@ -3,7 +3,7 @@
* is for IP V4 CIDR notation, but prepared for V6: just
* add the necessary bits where the comments indicate.
*
* $Header: /cvsroot/pgsql/src/backend/utils/adt/network.c,v 1.4
0 2003/03/21 23:18:52
tgl Exp $
* $Header: /cvsroot/pgsql/src/backend/utils/adt/network.c,v 1.4
1 2003/05/13 18:03:07
tgl Exp $
*
* Jon Postel RIP 16 Oct 1998
*/
...
...
@@ -16,6 +16,7 @@
#include <arpa/inet.h>
#include "catalog/pg_type.h"
#include "libpq/pqformat.h"
#include "utils/builtins.h"
#include "utils/inet.h"
...
...
@@ -148,6 +149,101 @@ cidr_out(PG_FUNCTION_ARGS)
}
/*
* inet_recv - converts external binary format to inet
*
* The external representation is (one byte apiece for)
* family, bits, type, address length, address in network byte order.
*/
Datum
inet_recv
(
PG_FUNCTION_ARGS
)
{
StringInfo
buf
=
(
StringInfo
)
PG_GETARG_POINTER
(
0
);
inet
*
addr
;
char
*
addrptr
;
int
bits
;
int
nb
,
i
;
/* make sure any unused bits in a CIDR value are zeroed */
addr
=
(
inet
*
)
palloc0
(
VARHDRSZ
+
sizeof
(
inet_struct
));
ip_family
(
addr
)
=
pq_getmsgbyte
(
buf
);
if
(
ip_family
(
addr
)
!=
AF_INET
)
elog
(
ERROR
,
"Invalid family in external inet"
);
bits
=
pq_getmsgbyte
(
buf
);
if
(
bits
<
0
||
bits
>
32
)
elog
(
ERROR
,
"Invalid bits in external inet"
);
ip_bits
(
addr
)
=
bits
;
ip_type
(
addr
)
=
pq_getmsgbyte
(
buf
);
if
(
ip_type
(
addr
)
!=
0
&&
ip_type
(
addr
)
!=
1
)
elog
(
ERROR
,
"Invalid type in external inet"
);
nb
=
pq_getmsgbyte
(
buf
);
if
(
nb
!=
ip_addrsize
(
addr
))
elog
(
ERROR
,
"Invalid length in external inet"
);
VARATT_SIZEP
(
addr
)
=
VARHDRSZ
+
((
char
*
)
&
ip_v4addr
(
addr
)
-
(
char
*
)
VARDATA
(
addr
))
+
ip_addrsize
(
addr
);
addrptr
=
(
char
*
)
&
ip_v4addr
(
addr
);
for
(
i
=
0
;
i
<
nb
;
i
++
)
addrptr
[
i
]
=
pq_getmsgbyte
(
buf
);
/*
* Error check: CIDR values must not have any bits set beyond the
* masklen. XXX this code is not IPV6 ready.
*/
if
(
ip_type
(
addr
))
{
if
(
!
v4addressOK
(
ip_v4addr
(
addr
),
bits
))
elog
(
ERROR
,
"invalid external CIDR value: has bits set to right of mask"
);
}
PG_RETURN_INET_P
(
addr
);
}
/* share code with INET case */
Datum
cidr_recv
(
PG_FUNCTION_ARGS
)
{
return
inet_recv
(
fcinfo
);
}
/*
* inet_send - converts inet to binary format
*/
Datum
inet_send
(
PG_FUNCTION_ARGS
)
{
inet
*
addr
=
PG_GETARG_INET_P
(
0
);
StringInfoData
buf
;
char
*
addrptr
;
int
nb
,
i
;
pq_begintypsend
(
&
buf
);
pq_sendbyte
(
&
buf
,
ip_family
(
addr
));
pq_sendbyte
(
&
buf
,
ip_bits
(
addr
));
pq_sendbyte
(
&
buf
,
ip_type
(
addr
));
nb
=
ip_addrsize
(
addr
);
if
(
nb
<
0
)
nb
=
0
;
pq_sendbyte
(
&
buf
,
nb
);
addrptr
=
(
char
*
)
&
ip_v4addr
(
addr
);
for
(
i
=
0
;
i
<
nb
;
i
++
)
pq_sendbyte
(
&
buf
,
addrptr
[
i
]);
PG_RETURN_BYTEA_P
(
pq_endtypsend
(
&
buf
));
}
/* share code with INET case */
Datum
cidr_send
(
PG_FUNCTION_ARGS
)
{
return
inet_send
(
fcinfo
);
}
static
Datum
text_network
(
text
*
src
,
int
type
)
{
...
...
src/backend/utils/adt/pseudotypes.c
View file @
0249c242
...
...
@@ -16,12 +16,13 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/adt/pseudotypes.c,v 1.
6 2003/05/08 22:19:56
tgl Exp $
* $Header: /cvsroot/pgsql/src/backend/utils/adt/pseudotypes.c,v 1.
7 2003/05/13 18:03:07
tgl Exp $
*
*-------------------------------------------------------------------------
*/
#include "postgres.h"
#include "libpq/pqformat.h"
#include "utils/array.h"
#include "utils/builtins.h"
...
...
@@ -54,7 +55,7 @@ record_out(PG_FUNCTION_ARGS)
Datum
record_recv
(
PG_FUNCTION_ARGS
)
{
elog
(
ERROR
,
"Cannot accept a
constant
of type %s"
,
"RECORD"
);
elog
(
ERROR
,
"Cannot accept a
value
of type %s"
,
"RECORD"
);
PG_RETURN_VOID
();
/* keep compiler quiet */
}
...
...
@@ -98,6 +99,34 @@ cstring_out(PG_FUNCTION_ARGS)
PG_RETURN_CSTRING
(
pstrdup
(
str
));
}
/*
* cstring_recv - binary input routine for pseudo-type CSTRING.
*/
Datum
cstring_recv
(
PG_FUNCTION_ARGS
)
{
StringInfo
buf
=
(
StringInfo
)
PG_GETARG_POINTER
(
0
);
char
*
str
;
int
nbytes
;
str
=
pq_getmsgtext
(
buf
,
buf
->
len
-
buf
->
cursor
,
&
nbytes
);
PG_RETURN_CSTRING
(
str
);
}
/*
* cstring_send - binary output routine for pseudo-type CSTRING.
*/
Datum
cstring_send
(
PG_FUNCTION_ARGS
)
{
char
*
str
=
PG_GETARG_CSTRING
(
0
);
StringInfoData
buf
;
pq_begintypsend
(
&
buf
);
pq_sendtext
(
&
buf
,
str
,
strlen
(
str
));
PG_RETURN_BYTEA_P
(
pq_endtypsend
(
&
buf
));
}
/*
* any_in - input routine for pseudo-type ANY.
...
...
@@ -144,6 +173,32 @@ anyarray_out(PG_FUNCTION_ARGS)
return
array_out
(
fcinfo
);
}
/*
* anyarray_recv - binary input routine for pseudo-type ANYARRAY.
*
* XXX this could actually be made to work, since the incoming array
* data will contain the element type OID. Need to think through
* type-safety issues before allowing it, however.
*/
Datum
anyarray_recv
(
PG_FUNCTION_ARGS
)
{
elog
(
ERROR
,
"Cannot accept a value of type %s"
,
"ANYARRAY"
);
PG_RETURN_VOID
();
/* keep compiler quiet */
}
/*
* anyarray_send - binary output routine for pseudo-type ANYARRAY.
*
* We may as well allow this, since array_send will in fact work.
*/
Datum
anyarray_send
(
PG_FUNCTION_ARGS
)
{
return
array_send
(
fcinfo
);
}
/*
* void_in - input routine for pseudo-type VOID.
...
...
src/include/catalog/catversion.h
View file @
0249c242
...
...
@@ -37,7 +37,7 @@
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: catversion.h,v 1.19
2 2003/05/13 04:38:58
tgl Exp $
* $Id: catversion.h,v 1.19
3 2003/05/13 18:03:07
tgl Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -53,6 +53,6 @@
*/
/* yyyymmddN */
#define CATALOG_VERSION_NO 2003051
22
#define CATALOG_VERSION_NO 2003051
31
#endif
src/include/catalog/pg_proc.h
View file @
0249c242
...
...
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: pg_proc.h,v 1.29
8 2003/05/12 23:08:51
tgl Exp $
* $Id: pg_proc.h,v 1.29
9 2003/05/13 18:03:07
tgl Exp $
*
* NOTES
* The script catalog/genbki.sh reads this file and generates .bki
...
...
@@ -3313,6 +3313,54 @@ DATA(insert OID = 2478 ( interval_recv PGNSP PGUID 12 f f t f i 1 1186 "228
DESCR
(
"I/O"
);
DATA
(
insert
OID
=
2479
(
interval_send
PGNSP
PGUID
12
f
f
t
f
i
1
17
"1186"
interval_send
-
_null_
));
DESCR
(
"I/O"
);
DATA
(
insert
OID
=
2480
(
lseg_recv
PGNSP
PGUID
12
f
f
t
f
i
1
601
"2281"
lseg_recv
-
_null_
));
DESCR
(
"I/O"
);
DATA
(
insert
OID
=
2481
(
lseg_send
PGNSP
PGUID
12
f
f
t
f
i
1
17
"601"
lseg_send
-
_null_
));
DESCR
(
"I/O"
);
DATA
(
insert
OID
=
2482
(
path_recv
PGNSP
PGUID
12
f
f
t
f
i
1
602
"2281"
path_recv
-
_null_
));
DESCR
(
"I/O"
);
DATA
(
insert
OID
=
2483
(
path_send
PGNSP
PGUID
12
f
f
t
f
i
1
17
"602"
path_send
-
_null_
));
DESCR
(
"I/O"
);
DATA
(
insert
OID
=
2484
(
box_recv
PGNSP
PGUID
12
f
f
t
f
i
1
603
"2281"
box_recv
-
_null_
));
DESCR
(
"I/O"
);
DATA
(
insert
OID
=
2485
(
box_send
PGNSP
PGUID
12
f
f
t
f
i
1
17
"603"
box_send
-
_null_
));
DESCR
(
"I/O"
);
DATA
(
insert
OID
=
2486
(
poly_recv
PGNSP
PGUID
12
f
f
t
f
i
1
604
"2281"
poly_recv
-
_null_
));
DESCR
(
"I/O"
);
DATA
(
insert
OID
=
2487
(
poly_send
PGNSP
PGUID
12
f
f
t
f
i
1
17
"604"
poly_send
-
_null_
));
DESCR
(
"I/O"
);
DATA
(
insert
OID
=
2488
(
line_recv
PGNSP
PGUID
12
f
f
t
f
i
1
628
"2281"
line_recv
-
_null_
));
DESCR
(
"I/O"
);
DATA
(
insert
OID
=
2489
(
line_send
PGNSP
PGUID
12
f
f
t
f
i
1
17
"628"
line_send
-
_null_
));
DESCR
(
"I/O"
);
DATA
(
insert
OID
=
2490
(
circle_recv
PGNSP
PGUID
12
f
f
t
f
i
1
718
"2281"
circle_recv
-
_null_
));
DESCR
(
"I/O"
);
DATA
(
insert
OID
=
2491
(
circle_send
PGNSP
PGUID
12
f
f
t
f
i
1
17
"718"
circle_send
-
_null_
));
DESCR
(
"I/O"
);
DATA
(
insert
OID
=
2492
(
cash_recv
PGNSP
PGUID
12
f
f
t
f
i
1
790
"2281"
cash_recv
-
_null_
));
DESCR
(
"I/O"
);
DATA
(
insert
OID
=
2493
(
cash_send
PGNSP
PGUID
12
f
f
t
f
i
1
17
"790"
cash_send
-
_null_
));
DESCR
(
"I/O"
);
DATA
(
insert
OID
=
2494
(
macaddr_recv
PGNSP
PGUID
12
f
f
t
f
i
1
829
"2281"
macaddr_recv
-
_null_
));
DESCR
(
"I/O"
);
DATA
(
insert
OID
=
2495
(
macaddr_send
PGNSP
PGUID
12
f
f
t
f
i
1
17
"829"
macaddr_send
-
_null_
));
DESCR
(
"I/O"
);
DATA
(
insert
OID
=
2496
(
inet_recv
PGNSP
PGUID
12
f
f
t
f
i
1
869
"2281"
inet_recv
-
_null_
));
DESCR
(
"I/O"
);
DATA
(
insert
OID
=
2497
(
inet_send
PGNSP
PGUID
12
f
f
t
f
i
1
17
"869"
inet_send
-
_null_
));
DESCR
(
"I/O"
);
DATA
(
insert
OID
=
2498
(
cidr_recv
PGNSP
PGUID
12
f
f
t
f
i
1
650
"2281"
cidr_recv
-
_null_
));
DESCR
(
"I/O"
);
DATA
(
insert
OID
=
2499
(
cidr_send
PGNSP
PGUID
12
f
f
t
f
i
1
17
"650"
cidr_send
-
_null_
));
DESCR
(
"I/O"
);
DATA
(
insert
OID
=
2500
(
cstring_recv
PGNSP
PGUID
12
f
f
t
f
s
1
2275
"2281"
cstring_recv
-
_null_
));
DESCR
(
"I/O"
);
DATA
(
insert
OID
=
2501
(
cstring_send
PGNSP
PGUID
12
f
f
t
f
s
1
17
"2275"
cstring_send
-
_null_
));
DESCR
(
"I/O"
);
DATA
(
insert
OID
=
2502
(
anyarray_recv
PGNSP
PGUID
12
f
f
t
f
s
1
2277
"2281"
anyarray_recv
-
_null_
));
DESCR
(
"I/O"
);
DATA
(
insert
OID
=
2503
(
anyarray_send
PGNSP
PGUID
12
f
f
t
f
s
1
17
"2277"
anyarray_send
-
_null_
));
DESCR
(
"I/O"
);
/*
...
...
src/include/catalog/pg_type.h
View file @
0249c242
...
...
@@ -8,7 +8,7 @@
* 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.14
4 2003/05/12 23:08:51
tgl Exp $
* $Id: pg_type.h,v 1.14
5 2003/05/13 18:03:08
tgl Exp $
*
* NOTES
* the genbki.sh script reads this file and generates .bki
...
...
@@ -326,20 +326,20 @@ DESCR("storage manager");
DATA
(
insert
OID
=
600
(
point
PGNSP
PGUID
16
f
b
t
\
054
0
701
point_in
point_out
point_recv
point_send
d
p
f
0
-
1
0
_null_
_null_
));
DESCR
(
"geometric point '(x, y)'"
);
#define POINTOID 600
DATA
(
insert
OID
=
601
(
lseg
PGNSP
PGUID
32
f
b
t
\
054
0
600
lseg_in
lseg_out
-
-
d
p
f
0
-
1
0
_null_
_null_
));
DATA
(
insert
OID
=
601
(
lseg
PGNSP
PGUID
32
f
b
t
\
054
0
600
lseg_in
lseg_out
lseg_recv
lseg_send
d
p
f
0
-
1
0
_null_
_null_
));
DESCR
(
"geometric line segment '(pt1,pt2)'"
);
#define LSEGOID 601
DATA
(
insert
OID
=
602
(
path
PGNSP
PGUID
-
1
f
b
t
\
054
0
0
path_in
path_out
-
-
d
x
f
0
-
1
0
_null_
_null_
));
DATA
(
insert
OID
=
602
(
path
PGNSP
PGUID
-
1
f
b
t
\
054
0
0
path_in
path_out
path_recv
path_send
d
x
f
0
-
1
0
_null_
_null_
));
DESCR
(
"geometric path '(pt1,...)'"
);
#define PATHOID 602
DATA
(
insert
OID
=
603
(
box
PGNSP
PGUID
32
f
b
t
\
073
0
600
box_in
box_out
-
-
d
p
f
0
-
1
0
_null_
_null_
));
DATA
(
insert
OID
=
603
(
box
PGNSP
PGUID
32
f
b
t
\
073
0
600
box_in
box_out
box_recv
box_send
d
p
f
0
-
1
0
_null_
_null_
));
DESCR
(
"geometric box '(lower left,upper right)'"
);
#define BOXOID 603
DATA
(
insert
OID
=
604
(
polygon
PGNSP
PGUID
-
1
f
b
t
\
054
0
0
poly_in
poly_out
-
-
d
x
f
0
-
1
0
_null_
_null_
));
DATA
(
insert
OID
=
604
(
polygon
PGNSP
PGUID
-
1
f
b
t
\
054
0
0
poly_in
poly_out
poly_recv
poly_send
d
x
f
0
-
1
0
_null_
_null_
));
DESCR
(
"geometric polygon '(pt1,...)'"
);
#define POLYGONOID 604
DATA
(
insert
OID
=
628
(
line
PGNSP
PGUID
32
f
b
t
\
054
0
701
line_in
line_out
-
-
d
p
f
0
-
1
0
_null_
_null_
));
DATA
(
insert
OID
=
628
(
line
PGNSP
PGUID
32
f
b
t
\
054
0
701
line_in
line_out
line_recv
line_send
d
p
f
0
-
1
0
_null_
_null_
));
DESCR
(
"geometric line (not implemented)'"
);
#define LINEOID 628
DATA
(
insert
OID
=
629
(
_line
PGNSP
PGUID
-
1
f
b
t
\
054
0
628
array_in
array_out
array_recv
array_send
d
x
f
0
-
1
0
_null_
_null_
));
...
...
@@ -366,23 +366,23 @@ DATA(insert OID = 705 ( unknown PGNSP PGUID -1 f b t \054 0 0 unknownin unkn
DESCR
(
""
);
#define UNKNOWNOID 705
DATA
(
insert
OID
=
718
(
circle
PGNSP
PGUID
24
f
b
t
\
054
0
0
circle_in
circle_out
-
-
d
p
f
0
-
1
0
_null_
_null_
));
DATA
(
insert
OID
=
718
(
circle
PGNSP
PGUID
24
f
b
t
\
054
0
0
circle_in
circle_out
circle_recv
circle_send
d
p
f
0
-
1
0
_null_
_null_
));
DESCR
(
"geometric circle '(center,radius)'"
);
#define CIRCLEOID 718
DATA
(
insert
OID
=
719
(
_circle
PGNSP
PGUID
-
1
f
b
t
\
054
0
718
array_in
array_out
array_recv
array_send
d
x
f
0
-
1
0
_null_
_null_
));
DATA
(
insert
OID
=
790
(
money
PGNSP
PGUID
4
f
b
t
\
054
0
0
cash_in
cash_out
-
-
i
p
f
0
-
1
0
_null_
_null_
));
DESCR
(
"
$d,ddd.cc, money
"
);
DATA
(
insert
OID
=
790
(
money
PGNSP
PGUID
4
f
b
t
\
054
0
0
cash_in
cash_out
cash_recv
cash_send
i
p
f
0
-
1
0
_null_
_null_
));
DESCR
(
"
monetary amounts, $d,ddd.cc
"
);
#define CASHOID 790
DATA
(
insert
OID
=
791
(
_money
PGNSP
PGUID
-
1
f
b
t
\
054
0
790
array_in
array_out
array_recv
array_send
i
x
f
0
-
1
0
_null_
_null_
));
/* OIDS 800 - 899 */
DATA
(
insert
OID
=
829
(
macaddr
PGNSP
PGUID
6
f
b
t
\
054
0
0
macaddr_in
macaddr_out
-
-
i
p
f
0
-
1
0
_null_
_null_
));
DATA
(
insert
OID
=
829
(
macaddr
PGNSP
PGUID
6
f
b
t
\
054
0
0
macaddr_in
macaddr_out
macaddr_recv
macaddr_send
i
p
f
0
-
1
0
_null_
_null_
));
DESCR
(
"XX:XX:XX:XX:XX:XX, MAC address"
);
#define MACADDROID 829
DATA
(
insert
OID
=
869
(
inet
PGNSP
PGUID
-
1
f
b
t
\
054
0
0
inet_in
inet_out
-
-
i
p
f
0
-
1
0
_null_
_null_
));
DATA
(
insert
OID
=
869
(
inet
PGNSP
PGUID
-
1
f
b
t
\
054
0
0
inet_in
inet_out
inet_recv
inet_send
i
p
f
0
-
1
0
_null_
_null_
));
DESCR
(
"IP address/netmask, host address, netmask optional"
);
#define INETOID 869
DATA
(
insert
OID
=
650
(
cidr
PGNSP
PGUID
-
1
f
b
t
\
054
0
0
cidr_in
cidr_out
-
-
i
p
f
0
-
1
0
_null_
_null_
));
DATA
(
insert
OID
=
650
(
cidr
PGNSP
PGUID
-
1
f
b
t
\
054
0
0
cidr_in
cidr_out
cidr_recv
cidr_send
i
p
f
0
-
1
0
_null_
_null_
));
DESCR
(
"network IP address/netmask, network address"
);
#define CIDROID 650
...
...
@@ -521,11 +521,11 @@ DATA(insert OID = 2211 ( _regtype PGNSP PGUID -1 f b t \054 0 2206 array_in a
*/
DATA
(
insert
OID
=
2249
(
record
PGNSP
PGUID
4
t
p
t
\
054
0
0
record_in
record_out
record_recv
record_send
i
p
f
0
-
1
0
_null_
_null_
));
#define RECORDOID 2249
DATA
(
insert
OID
=
2275
(
cstring
PGNSP
PGUID
-
2
f
p
t
\
054
0
0
cstring_in
cstring_out
-
-
c
p
f
0
-
1
0
_null_
_null_
));
DATA
(
insert
OID
=
2275
(
cstring
PGNSP
PGUID
-
2
f
p
t
\
054
0
0
cstring_in
cstring_out
cstring_recv
cstring_send
c
p
f
0
-
1
0
_null_
_null_
));
#define CSTRINGOID 2275
DATA
(
insert
OID
=
2276
(
any
PGNSP
PGUID
4
t
p
t
\
054
0
0
any_in
any_out
-
-
i
p
f
0
-
1
0
_null_
_null_
));
#define ANYOID 2276
DATA
(
insert
OID
=
2277
(
anyarray
PGNSP
PGUID
-
1
f
p
t
\
054
0
0
anyarray_in
anyarray_out
-
-
i
x
f
0
-
1
0
_null_
_null_
));
DATA
(
insert
OID
=
2277
(
anyarray
PGNSP
PGUID
-
1
f
p
t
\
054
0
0
anyarray_in
anyarray_out
anyarray_recv
anyarray_send
i
x
f
0
-
1
0
_null_
_null_
));
#define ANYARRAYOID 2277
DATA
(
insert
OID
=
2278
(
void
PGNSP
PGUID
4
t
p
t
\
054
0
0
void_in
void_out
-
-
i
p
f
0
-
1
0
_null_
_null_
));
#define VOIDOID 2278
...
...
src/include/utils/builtins.h
View file @
0249c242
...
...
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: builtins.h,v 1.21
5 2003/05/12 23:08:51
tgl Exp $
* $Id: builtins.h,v 1.21
6 2003/05/13 18:03:08
tgl Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -367,10 +367,14 @@ extern Datum record_recv(PG_FUNCTION_ARGS);
extern
Datum
record_send
(
PG_FUNCTION_ARGS
);
extern
Datum
cstring_in
(
PG_FUNCTION_ARGS
);
extern
Datum
cstring_out
(
PG_FUNCTION_ARGS
);
extern
Datum
cstring_recv
(
PG_FUNCTION_ARGS
);
extern
Datum
cstring_send
(
PG_FUNCTION_ARGS
);
extern
Datum
any_in
(
PG_FUNCTION_ARGS
);
extern
Datum
any_out
(
PG_FUNCTION_ARGS
);
extern
Datum
anyarray_in
(
PG_FUNCTION_ARGS
);
extern
Datum
anyarray_out
(
PG_FUNCTION_ARGS
);
extern
Datum
anyarray_recv
(
PG_FUNCTION_ARGS
);
extern
Datum
anyarray_send
(
PG_FUNCTION_ARGS
);
extern
Datum
void_in
(
PG_FUNCTION_ARGS
);
extern
Datum
void_out
(
PG_FUNCTION_ARGS
);
extern
Datum
trigger_in
(
PG_FUNCTION_ARGS
);
...
...
@@ -611,8 +615,12 @@ extern int inet_net_pton(int af, const char *src,
/* network.c */
extern
Datum
inet_in
(
PG_FUNCTION_ARGS
);
extern
Datum
inet_out
(
PG_FUNCTION_ARGS
);
extern
Datum
inet_recv
(
PG_FUNCTION_ARGS
);
extern
Datum
inet_send
(
PG_FUNCTION_ARGS
);
extern
Datum
cidr_in
(
PG_FUNCTION_ARGS
);
extern
Datum
cidr_out
(
PG_FUNCTION_ARGS
);
extern
Datum
cidr_recv
(
PG_FUNCTION_ARGS
);
extern
Datum
cidr_send
(
PG_FUNCTION_ARGS
);
extern
Datum
network_cmp
(
PG_FUNCTION_ARGS
);
extern
Datum
network_lt
(
PG_FUNCTION_ARGS
);
extern
Datum
network_le
(
PG_FUNCTION_ARGS
);
...
...
@@ -642,6 +650,8 @@ extern Datum network_scan_last(Datum in);
/* mac.c */
extern
Datum
macaddr_in
(
PG_FUNCTION_ARGS
);
extern
Datum
macaddr_out
(
PG_FUNCTION_ARGS
);
extern
Datum
macaddr_recv
(
PG_FUNCTION_ARGS
);
extern
Datum
macaddr_send
(
PG_FUNCTION_ARGS
);
extern
Datum
macaddr_cmp
(
PG_FUNCTION_ARGS
);
extern
Datum
macaddr_lt
(
PG_FUNCTION_ARGS
);
extern
Datum
macaddr_le
(
PG_FUNCTION_ARGS
);
...
...
src/include/utils/cash.h
View file @
0249c242
...
...
@@ -14,6 +14,8 @@ typedef int32 Cash;
extern
Datum
cash_in
(
PG_FUNCTION_ARGS
);
extern
Datum
cash_out
(
PG_FUNCTION_ARGS
);
extern
Datum
cash_recv
(
PG_FUNCTION_ARGS
);
extern
Datum
cash_send
(
PG_FUNCTION_ARGS
);
extern
Datum
cash_eq
(
PG_FUNCTION_ARGS
);
extern
Datum
cash_ne
(
PG_FUNCTION_ARGS
);
...
...
src/include/utils/geo_decls.h
View file @
0249c242
...
...
@@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: geo_decls.h,v 1.
39 2003/05/09 21:19:50
tgl Exp $
* $Id: geo_decls.h,v 1.
40 2003/05/13 18:03:08
tgl Exp $
*
* NOTE
* These routines do *not* use the float types from adt/.
...
...
@@ -213,6 +213,8 @@ extern double point_sl(Point *pt1, Point *pt2);
/* public lseg routines */
extern
Datum
lseg_in
(
PG_FUNCTION_ARGS
);
extern
Datum
lseg_out
(
PG_FUNCTION_ARGS
);
extern
Datum
lseg_recv
(
PG_FUNCTION_ARGS
);
extern
Datum
lseg_send
(
PG_FUNCTION_ARGS
);
extern
Datum
lseg_intersect
(
PG_FUNCTION_ARGS
);
extern
Datum
lseg_parallel
(
PG_FUNCTION_ARGS
);
extern
Datum
lseg_perp
(
PG_FUNCTION_ARGS
);
...
...
@@ -257,6 +259,8 @@ extern Datum inter_lb(PG_FUNCTION_ARGS);
/* public line routines */
extern
Datum
line_in
(
PG_FUNCTION_ARGS
);
extern
Datum
line_out
(
PG_FUNCTION_ARGS
);
extern
Datum
line_recv
(
PG_FUNCTION_ARGS
);
extern
Datum
line_send
(
PG_FUNCTION_ARGS
);
extern
Datum
line_interpt
(
PG_FUNCTION_ARGS
);
extern
Datum
line_distance
(
PG_FUNCTION_ARGS
);
extern
Datum
line_construct_pp
(
PG_FUNCTION_ARGS
);
...
...
@@ -270,6 +274,8 @@ extern Datum line_eq(PG_FUNCTION_ARGS);
/* public box routines */
extern
Datum
box_in
(
PG_FUNCTION_ARGS
);
extern
Datum
box_out
(
PG_FUNCTION_ARGS
);
extern
Datum
box_recv
(
PG_FUNCTION_ARGS
);
extern
Datum
box_send
(
PG_FUNCTION_ARGS
);
extern
Datum
box_same
(
PG_FUNCTION_ARGS
);
extern
Datum
box_overlap
(
PG_FUNCTION_ARGS
);
extern
Datum
box_overleft
(
PG_FUNCTION_ARGS
);
...
...
@@ -301,6 +307,8 @@ extern Datum box_div(PG_FUNCTION_ARGS);
/* public path routines */
extern
Datum
path_in
(
PG_FUNCTION_ARGS
);
extern
Datum
path_out
(
PG_FUNCTION_ARGS
);
extern
Datum
path_recv
(
PG_FUNCTION_ARGS
);
extern
Datum
path_send
(
PG_FUNCTION_ARGS
);
extern
Datum
path_n_lt
(
PG_FUNCTION_ARGS
);
extern
Datum
path_n_gt
(
PG_FUNCTION_ARGS
);
extern
Datum
path_n_eq
(
PG_FUNCTION_ARGS
);
...
...
@@ -328,6 +336,8 @@ extern Datum path_poly(PG_FUNCTION_ARGS);
/* public polygon routines */
extern
Datum
poly_in
(
PG_FUNCTION_ARGS
);
extern
Datum
poly_out
(
PG_FUNCTION_ARGS
);
extern
Datum
poly_recv
(
PG_FUNCTION_ARGS
);
extern
Datum
poly_send
(
PG_FUNCTION_ARGS
);
extern
Datum
poly_left
(
PG_FUNCTION_ARGS
);
extern
Datum
poly_overleft
(
PG_FUNCTION_ARGS
);
extern
Datum
poly_right
(
PG_FUNCTION_ARGS
);
...
...
@@ -348,6 +358,8 @@ extern Datum box_poly(PG_FUNCTION_ARGS);
/* public circle routines */
extern
Datum
circle_in
(
PG_FUNCTION_ARGS
);
extern
Datum
circle_out
(
PG_FUNCTION_ARGS
);
extern
Datum
circle_recv
(
PG_FUNCTION_ARGS
);
extern
Datum
circle_send
(
PG_FUNCTION_ARGS
);
extern
Datum
circle_same
(
PG_FUNCTION_ARGS
);
extern
Datum
circle_overlap
(
PG_FUNCTION_ARGS
);
extern
Datum
circle_overleft
(
PG_FUNCTION_ARGS
);
...
...
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