mirror of
https://github.com/postgres/postgres.git
synced 2025-06-13 07:41:39 +03:00
Add a bunch of pseudo-types to replace the behavior formerly associated
with OPAQUE, as per recent pghackers discussion. I still want to do some more work on the 'cstring' pseudo-type, but I'm going to commit the bulk of the changes now before the tree starts shifting under me ...
This commit is contained in:
@ -48,14 +48,6 @@ complex_in(char *str)
|
||||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
* You might have noticed a slight inconsistency between the following
|
||||
* declaration and the SQL definition:
|
||||
* CREATE FUNCTION complex_out(opaque) RETURNS opaque ...
|
||||
* The reason is that the argument pass into complex_out is really just a
|
||||
* pointer. POSTGRES thinks all output functions are:
|
||||
* char *out_func(char *);
|
||||
*/
|
||||
char *
|
||||
complex_out(Complex * complex)
|
||||
{
|
||||
@ -64,8 +56,8 @@ complex_out(Complex * complex)
|
||||
if (complex == NULL)
|
||||
return NULL;
|
||||
|
||||
result = (char *) palloc(60);
|
||||
sprintf(result, "(%g,%g)", complex->x, complex->y);
|
||||
result = (char *) palloc(100);
|
||||
snprintf(result, 100, "(%g,%g)", complex->x, complex->y);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
-- Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
|
||||
-- Portions Copyright (c) 1994, Regents of the University of California
|
||||
--
|
||||
-- $Header: /cvsroot/pgsql/src/tutorial/complex.source,v 1.13 2002/07/30 05:24:56 tgl Exp $
|
||||
-- $Header: /cvsroot/pgsql/src/tutorial/complex.source,v 1.14 2002/08/22 00:01:51 tgl Exp $
|
||||
--
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
@ -28,7 +28,7 @@
|
||||
-- (in memory) representation. You will get a message telling you 'complex'
|
||||
-- does not exist yet but that's okay.
|
||||
|
||||
CREATE FUNCTION complex_in(opaque)
|
||||
CREATE FUNCTION complex_in(cstring)
|
||||
RETURNS complex
|
||||
AS '_OBJWD_/complex'
|
||||
LANGUAGE 'c';
|
||||
@ -36,8 +36,8 @@ CREATE FUNCTION complex_in(opaque)
|
||||
-- the output function 'complex_out' takes the internal representation and
|
||||
-- converts it into the textual representation.
|
||||
|
||||
CREATE FUNCTION complex_out(opaque)
|
||||
RETURNS opaque
|
||||
CREATE FUNCTION complex_out(complex)
|
||||
RETURNS cstring
|
||||
AS '_OBJWD_/complex'
|
||||
LANGUAGE 'c';
|
||||
|
||||
@ -195,4 +195,3 @@ SELECT * from test_complex where a > '(56.0,-22.5)';
|
||||
-- clean up the example
|
||||
DROP TABLE test_complex;
|
||||
DROP TYPE complex CASCADE;
|
||||
DROP FUNCTION complex_out(opaque);
|
||||
|
Reference in New Issue
Block a user