PostgreSQL 8.0.0 �����ĵ���PostgreSQL �й� ������ | ||||
---|---|---|---|---|
Prev | Fast Backward | Fast Forward | Next |
SPI_exec ִ�������� SQL �����ȡ count �С� ��� read_only Ϊ�棬���������ֻ���ģ���˿���������һЩִ�еĿ�����
�������ֻ���������ӵĹ����е��á�
��� count ���㣬���������ʺϵ���������ִ�С� ��� count ���� 0����ô����ִ�е������������ƣ�����һ�� LIMIT �Ӿ䣩�� ���磬
SPI_execute("INSERT INTO foo SELECT * FROM bar", false, 5);
��ֻ������� 5 �в�����С�
�������һ���ִ��ﴫ�ݶ����� SPI_execute �������ִ�е�����Ľ���� count �����ƶ�����Ӧ����ÿһ����� ���Dz���Ӧ���ڹ������ɵ��������
��� read_only �� false�� SPI_execute �������������������ִ���ִ����ÿ������֮ǰ����һ���µ�"����"�� �����ǰ����ĸ��뼶����SERIALIZABLE���������ʵ���ϲ����ı䣬 ������ READ COMMITTED ģʽ�������ո�������ÿ������������Ự�������ύ�Ľ���� ����ʵ������Ϊ�������ݿ��������һ�µ���Ϊ��
��� read_only �� true�� SPI_execute �������¿��ջ��������������������ָ����� SELECT ��������������ִ���������ʹ��Ϊ��Χ�IJ�ѯ���������Ŀ���ִ�С� ���ִ��ģʽ�ȶ�/дģʽִ�е�����Щ����Ϊ��������ÿ�������һЩ������ ���������������������ȶ�����������Ϊ����ִ�ж���ʹ��ͬһ�����գ� ����ﲻ���иı䡣
ͨ������ͬһ��ʹ�� SPI �ĺ��������ֻ���Ͷ�д�����Dz����ǵģ� �������ܵ��·dz����ҵ���Ϊ����Ϊֻ���IJ�ѯ���ܿ����κζ�д�IJ�ѯ�������ݿ���¡�
�����һ������ִ�з��صĽ����ʵ�����������ȫ�ֵı��� SPI_processed �� �����Ǻ������ص�ֵ�� SPI_OK_UTILITY������������ķ���ֵ�� SPI_OK_SELECT�� ��ô�����ʹ��ȫ��ָ�� SPITupleTable *SPI_tuptable ���ʽ���С�
�ṹ SPITupleTable ����������ģ�
typedef struct { MemoryContext tuptabcxt; /* �������ڴ滷�� */ uint32 alloced; /* ����� vals ����Ŀ */ uint32 free; /* ���е� vals ��Ŀ */ TupleDesc tupdesc; /* �������� */ HeapTuple *vals; /* ������ */ } SPITupleTable;
vals ��һ��ָ�������еĵ�ָ�����顣 ����Ч��¼����Ŀ�� SPI_processed �������� tupdesc ��һ����������������Դ��ݸ� SPI ����������Щ�����С� tuptabcxt��alloced���� free �� SPI ���ڲ��ֶΣ����Ǹ� SPI ������ʹ�õġ�
SPI_finish �ͷ������ڵ�ǰ�����з���� SPITupleTables�� ������Ѿ��������ض��Ľ������ô���Ը�����ͷ����������ǵ��� SPI_freetuptable��
����Ҫִ�е�������ִ�
true ����ֻ����ִ��
����ص��������
�������ִ�гɹ�����ô��������ֵ֮һ���Ǹ�������
���ִ����һ�� SELECT�������� SELECT INTO��
���ִ����һ�� SELECT INTO��
���ִ����һ�� DELETE��
���ִ����һ�� INSERT��
���ִ����һ�� UPDATE��
���ִ����һ�����������㣨���磬CREATE TABLE��
��������ʱ���������и���ֵ֮һ��
��� command �� NULL ���� count �� 0
�����ͼ���� COPY TO stdout ���� COPY FROM stdin
�����ͼ���� DECLARE��CLOSE������ FETCH
�����ͼ���� BEGIN��COMMIT������ ROLLBACK
��������δ֪����Ӧ�÷�����
�����һ��δ���ӵĹ����е���