��˽Ҥ٤��Ƥ���褦�ˡ�PostgreSQL�ˤϴ��ܥǡ�����(�ץ�����ߥ�����������Ƥ��ޤ��� )��ʣ��ǡ������Ȥ���2����Υǡ�����������ޤ������ξϤǤϡ����������ܥǡ����������������ˡ�ˤĤ��Ƥ��������ޤ���
������ǻ��Ѥ�����ϡ�tutorial �ǥ��쥯�ȥ��complex.sql �� complex.c�Ȥ���̾���Ǥ����Ƥ���ޤ��� ʣ��ǡ���������� funcs.sql �ˤ���ޤ���
�桼������ǡ������Ǥϡ�ɬ�����ϴؿ��Ƚ��ϴؿ���ɬ�פǤ��������δؿ��ϡ�����(�桼���ˤ�����Ϥȥ桼���ؤν��ϤΤ����)ʸ������ˤɤΤ褦�ʷ�����ɽ������뤫�ȡ����η���������Ǥɤ���������뤫����ꤷ�ޤ������ϴؿ��Ϥ������ϤȤ��� NULL ��üʸ������ꡢ���η���(�������)����ɽ�����֤��ޤ������ϴؿ��Ϥ��η�������ɽ�����ꡢNULL��üʸ������֤��ޤ���
�㤨�С�ʣ�ǿ���ɽ������ʣ�ǿ�����������뤳�Ȥ�ͤ��ޤ��� �䤿���Ϥ����餯�����Τ褦�� C ��¤�Τ�ʣ�ǿ���������ɽ������
typedef struct Complex { double x; double y; } Complex;
�����ơ�����ʸ����ɽ���Ȥ��� (x,y) ������ʸ�������Ѥ��뤳�Ȥ�����Ǥ��礦��
�����δؿ����ä˽��ϴؿ��Ҥ���ΤϺ���ǤϤ���ޤ��������ʤ��顢�����Ĥ���������������ޤ���
����(ʸ����)ɽ�������������ˤϡ�����ɽ���Τ���δ����Ƿ�ϴ�ʥѡ��������ϴؿ��Ȥ��ƽʤ���Фʤ�ޤ���
��:
Complex * complex_in(char *str) { double x, y; Complex *result; if (sscanf(str, " ( %lf , %lf )", &x, &y) != 2) { elog(ERROR, "complex_in: error in parsing %s", str); return NULL; } result = (Complex *)palloc(sizeof(Complex)); result->x = x; result->y = y; return (result); }
���ϴؿ���ñ�˲����Τ褦�ˤʤ�Ǥ��礦��
char * complex_out(Complex *complex) { char *result; if (complex == NULL) return(NULL); result = (char *) palloc(60); sprintf(result, "(%g,%g)", complex->x, complex->y); return(result); }
�����ϴؿ��ϡ��ơ��εմؿ��ˤʤ�褦�ˤ���٤��Ǥ����������ʤ��ȡ��ǡ�����ե�����˥���פ����㤨�Ф����¾�Υ���ԥ塼����ˤ����̤�ï���Υǡ����١����ʤɤ�����Ȥ���ݤˡ���������꤬ȯ������Ǥ��礦������ϡ���ư�������ط�����ݤˤ褯ȯ����������Ǥ���
complex(ʣ�ǿ�)�����������������η���������������2�ĤΥ桼������ؿ�complex_in ��complex_out����������ɬ�פ�����ޤ���
CREATE FUNCTION complex_in(cstring) RETURNS complex AS 'PGROOT/tutorial/complex' LANGUAGE C; CREATE FUNCTION complex_out(complex) RETURNS cstring AS 'PGROOT/tutorial/complex' LANGUAGE C;
�Ǹ�ˡ��ǡ�������������뤳�Ȥ��Ǥ��ޤ���
CREATE TYPE complex ( internallength = 16, input = complex_in, output = complex_out );
���ϴؿ�����ӽ��ϴؿ����������̤����Υǡ������Ȥ��ʤ���Фʤ�ʤ����Ȥ����դ��Ƥ��������� �����ͭ�������Ǥ����ٹ�Υ�å�������ɽ������ޤ���̵�뤷�ƹ����ޤ���
���˽Ҥ٤��褦�ˡ�PostgreSQL�ϴ��ܷ�����������˥��ݡ��Ȥ��Ƥ��ޤ������ˡ�PostgreSQL �Ǥϥ桼�������������⥵�ݡ��Ȥ��Ƥ��ޤ�����������������PostgreSQL �ϼ�ưŪ�ˤ��η�������Υ��ݡ��Ȥ����ޤ������Ū����ͳ�ˤ�ꡢ���ϥ桼���������̾�������˥������������ʸ�� _ ���դ���̾���ˤʤ�ޤ���
ʣ�緿�ξ��ϡ����Ǥ˥����ƥ�Ϥ���餬����Ū�ˤɤΤ褦�ˤʤäƤ��뤫���İ����Ƥ���Τǡ��ؿ����������ɬ�פϤ���ޤ���
�桼������ǡ������������������礭������ɴ�Х��Ȥ�ۤ���ΤǤ���С�TOAST �����ǽ�Ȥ���ˤ����դ�ɬ�פǤ���TOAST���Τ���ˤϡ�����ɽ��������Ĺ�ǡ�����ɸ��쥤�����Ȥ˽��äƤ��ʤ���Фʤ�ޤ�����Ƭ��4�Х��Ȥ�int32���ǡ����켫�Ȥ�ޤ�ǡ����ι�ץХ��ȿ�������ޤ����ޤ������η����ͤ�����դ���ؿ��Ϥ��٤ơ�Ϳ����줿�ͤˤĤ���pg_detoast_datum() ��ƤӽФ��Τ����դ�ɬ�פǤ��� ���δؿ�����̩�Ǥʤ����ϡ��ͤ�NULL�Ǥʤ����Ȥ餫���ḡ�����ʤ���Фʤ�ޤ��Ǹ�ˡ�CREATE TYPE ���ޥ�ɤ�¹Ԥ���ݤˡ�Ŭ������¸���ץ��������Ʋ�������