¾�ΥС�������ʸ�� �� 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

51.2. ����ǥå������������᥽�åɴؿ�

����ǥå������������᥽�åɤ��󶡤��ʤ���Фʤ�ʤ�������ǥå������ۤ�����ݼ�ؿ���ʲ��˼����ޤ���

IndexBuildResult *
ambuild (Relation heapRelation,
         Relation indexRelation,
         IndexInfo *indexInfo);

����������ǥå������ۤ��ޤ��� ���Υ���ǥå�����졼�����ʪ��Ū�˺�������ޤ��� ����ϡ����������᥽�åɤ�ɬ�פȤ��벿�餫�θ���ǡ����ȡ��ơ��֥���˴�¸�Τ��٤ƤΥ��ץ���б�������ܤ��񤭹��ޤ�ʤ���Фʤ�ޤ��� �̾ambuild�ؿ���IndexBuildHeapScan()��ƤӽФ�����¸�Υ��ץ��ơ��֥뤫�饹����󤷡�����ǥå������������ʤ���Фʤ�ʤ�������׻����ޤ��� ���δؿ��ϡ�����������ǥå����˴ؤ������׾����ޤ�palloc���줿��¤�Τ��֤��ʤ���Фʤ�ޤ���

bool
aminsert (Relation indexRelation,
          Datum *values,
          bool *isnull,
          ItemPointer heap_tid,
          Relation heapRelation,
          IndexUniqueCheck checkUnique);

��¸�Υ���ǥå����˿��������ץ���������ޤ��� values�����isnull���󤬥���ǥå�������륭���ͤ��󶡤����Τǡ�heap_tid������ǥå��������TID�Ǥ��� ���������᥽�åɤ���դʥ���ǥå����򥵥ݡ��Ȥ�����ʤ���pg_am.amcanunique�����ξ��ˡ�checkUnique�ϼ¹Ԥ������������μ���򼨤��ޤ��� ����ϰ���������ٱ��ǽ���ݤ��ˤ�ä��Ѥ��ޤ��� 項51.5�򻲾Ȥ��Ƥ��������� �̾異�������᥽�åɤϡ������������Ԥ�����heapRelation�ѥ�᡼���Τߤ�ɬ�פȤ��ޤ� (���ץ��ͭ�����򸡾ڤ��뤿��˥ҡ�����򸡺����ʤ���Фʤ�ޤ���)��

checkUnique��UNIQUE_CHECK_PARTIAL�ξ�硢�ؿ����������η���ͤǽ�ʬ�Ǥ��� ���ξ�硢���η�̤Ͽ��������ܤϰ�դǤ��뤳�Ȥ���ǧ���줿���Ȥ򡢰������η�̤ϰ�դǤʤ���ǽ�������뤳��(�ٱ�����������ͽ�ꤷ�ʤ���Фʤ�ʤ�����)���̣���ޤ��� ¾�ξ��Ǥϡ�����ε��Ȥ�����̤��侩����ޤ���

�����Υ���ǥå����ǤϤ��٤ƤΥ��ץ�򥤥�ǥå����դ����ʤ���ǽ��������ޤ��� ���ץ뤬����ǥå����դ�����ʤ���硢aminsert�ϲ���Ԥ鷺�����ʤ���Фʤ�ޤ���

IndexBulkDeleteResult *
ambulkdelete (IndexVacuumInfo *info,
              IndexBulkDeleteResult *stats,
              IndexBulkDeleteCallback callback,
              void *callback_state);

����ǥå������饿�ץ��ʣ���ġˤ������ޤ��� �����"�����"����Ԥ��ޤ���������ǥå������Τ򥹥���󤷡��ƹ��ܤ��Ф��ƺ�����٤����ɤ���������Ԥ��褦�˼�������뤳�Ȥ����ꤵ��Ƥ��ޤ��� �Ϥ����callback�ؿ��ϡ�callback(TID, callback_state) returns bool�Ȥ������ǡ�������TID�Ǽ��̤���륤��ǥå������ܤ������٤����ɤ������ꤹ�뤿��˸ƤӽФ��ʤ���Фʤ�ޤ��� NULL�ޤ���palloc����������αƶ��˴ؤ������׾����ޤ๽¤�Τ��֤��ʤ���Фʤ�ޤ��� amvacuumcleanup���Ϥ��ʤ���Фʤ�ʤ����󤬤ʤ���С�NULL���֤��Ƥ����ꤢ��ޤ���

maintenance_work_mem�����¤ˤ�ꡢ¿���Υ��ץ뤬�����������ambulkdelete��ʣ����ƤӽФ�ɬ�פ����뤫�⤷��ޤ��� stats�����ϡ����Υ���ǥå������Ф�������θƤӽФ���̤Ǥ��� ��VACUUM���ˤ�����ǽ�θƤӽФ��ǤϤ����NULL�Ǥ����� ����ˤ�ꡢAM��������Τ˸٤ä����׾����׻����뤳�Ȥ��Ǥ��ޤ��� ŵ��Ū�ˡ��Ϥ��줿stats��NULL�Ǥʤ���硢ambulkdelete��Ʊ����¤�Τ��ѹ������֤��ޤ���

IndexBulkDeleteResult *
amvacuumcleanup (IndexVacuumInfo *info,
                 IndexBulkDeleteResult *stats);

VACUUM����0��ʾ��ambulkdelete�ƤӽФ��˸��������Ԥ��ޤ��� ����ϡ�����ǥå������׾�����֤��ʾ�ν�����Ԥ�ɬ�פϤ���ޤ��� �����������Υ���ǥå����ڡ����β���ʤɤΰ��������Ԥ���ǽ��������ޤ��� stats�ϺǸ��ambulkdelete�ƤӽФ����֤�����ΤǤ��� �������ɬ�פ����륿�ץ뤬¸�ߤ��ʤ��ä������ambulkdelete���ƤӽФ���ʤ��ä�����NULL�Ȥʤ�ޤ��� ��̤�NULL�Ǥʤ���С�palloc���줿��¤�ΤǤʤ���Фʤ�ޤ��� �ޤޤ�����׾����pg_class�򹹿����뤿��˻��Ѥ��졢�ޤ���VERBOSE�����ꤵ�줿VACUUM�ˤ�ä���𤵤�ޤ��� VACUUM���δ֤˥���ǥå������ޤä����Ѥ��ʤ��ä�����NULL���֤��Ƥ����ꤢ��ޤ��� �������������Ǥʤ�������������׾�����֤��ʤ���Фʤ�ޤ���

PostgreSQL 8.4�λ����ǡ�amvacuumcleanup��ANALYZE���δ�λ�����ˤ�ƤӽФ���ޤ��� ���ξ�硢stats�Ͼ��NULL�ǡ�����ͤϤޤä���̵�뤵��ޤ��� ���λ��ݤ�info->analyze_only�򸡺����뤳�ȤǼ��̤���ޤ��� ���������᥽�åɤ����Τ褦�ʸƤӽФ���������������ʳ����⤷�ʤ��褦�ˡ������Ƥ���ϼ�ư�Х��塼�����ץ������ΤߤǤ���褦�ˤ��뤳�Ȥ�侩���ޤ���

void
amcostestimate (PlannerInfo *root,
                IndexOptInfo *index,
                List *indexQuals,
                RelOptInfo *outer_rel,
                Cost *indexStartupCost,
                Cost *indexTotalCost,
                Selectivity *indexSelectivity,
                double *indexCorrelation);

����ǥå����������Υ����Ȥ���ꤷ�ޤ��� ���δؿ��ˤĤ��Ƥϸ�Ҥ�項51.6���������ޤ���

bytea *
amoptions (ArrayType *reloptions,
           bool validate);

����ǥå����Ѥ�reloptions�β��Ϥȸ��ڤ�Ԥ��ޤ��� ����ǥå�������NULL��reloptions����¸�ߤ�����ˤΤ߸ƤӽФ���ޤ��� reloptions�ϡ�name=value�����ι��ܤ���ʤ롢text��������Ǥ��� ���δؿ���bytea�����ͤ��������ʤ���Фʤ餺�������ͤϥ���ǥå�����relcache���ܤ�rd_options�ե�����ɤ˥��ԡ�����ޤ��� bytea�����ͤ����Ƥϥ��������᥽�åɤ��ȼ�������Ǥ���褦�˳�������Ƥ��ޤ��� ɸ��Υ��������᥽�åɤΤۤȤ�ɤϤ��٤�StdRdOptions��¤�Τ���Ѥ��ޤ��� validate�����ξ�硢���餫�Υ��ץ����ǧ���Ǥ��ʤ��ä�����̵�����ͤ�¸�ߤ�����硢���δؿ���Ŭ�ڤʥ��顼��å���������𤷤ʤ���Фʤ�ޤ��� validate�����ξ�硢̵���ʹ��ܤ�ñ��̵�뤵��ޤ��� ���ɤ߹��ߥ��ץ���󤬴���pg_catalog�˳�Ǽ����Ƥ�����validate�ϵ��Ǥ��� ���������᥽�åɤ����Υ��ץ�����Ѥε�§���ѹ��������ˤΤߡ�̵���ʹ��ܤ����Ф���ޤ��� �����ơ����ξ�硢�Ť����ܤ�̵�뤹�뤳�Ȥ�Ŭ�ڤǤ����� �ǥե���Ȥ�ư���Ԥ碌��������NULL���֤��Ƥ����ꤢ��ޤ��� ��

�����ʤ��饤��ǥå�������Ū�ϡ��褯��������������󥭡��ȸƤФ�롢����ǥå�����ǽ��WHERE�������������ץ�Υ������򥵥ݡ��Ȥ��뤳�ȤǤ��� ����ǥå����������Υ��ޥ�ƥ��å����ϸ��項51.3�Ǥ��ܤ����������ޤ��� ����ǥå������������᥽�åɤ�"ñ��"����ǥå����������"�ӥåȥޥå�"����ǥå���������󡢤ޤ��Ϥ�����������󶡤��ޤ��� ����ǥå������������᥽�åɤ��󶡤��ʤ���Фʤ�ʤ����⤷�����󶡤����ǽ���Τ��륹������Ϣ�δؿ���ʲ��˼����ޤ���

IndexScanDesc
ambeginscan (Relation indexRelation,
             int nkeys,
             ScanKey key);

�������������򳫻Ϥ��ޤ��� ��nkeysĹ�Ρ�key����ϥ���ǥå�����������ѤΥ�����󥭡���ʣ���ġˤ򵭽Ҥ��ޤ��� ��̤�palloc������¤�ΤǤʤ���Фʤ�ޤ��� ���������ͳ�ˤ�ꡢ����ǥå������������᥽�åɤ�RelationGetIndexScan()�ƤӽФ��ˤ�äƤ��ι�¤�Τ�������ʤ���Фʤ�ޤ����� �ۤȤ�ɤξ�硢ambeginscan���ΤϤ��θƤӽФ���¾�ˤϤۤȤ�ɲ���Ԥ��ޤ��� ����ǥå�����ư�ζ�̣������ʬ�ϡ�amrescan�ˤ���ޤ���

boolean
amgettuple (IndexScanDesc scan,
            ScanDirection direction);

���ꤵ�줿��������⤫����ꤵ�줿�����ʥ���ǥå�����������ޤ��ϸ����ˤǼ��Υ��ץ����Ф��ޤ��� ���ץ����Ф������Ͽ����֤��ޤ��� ���פ��륿�ץ뤬�ĤäƤ��ʤ����ϵ����֤��ޤ��� ���ξ�硢���Υ��ץ��TID��scan�˳�Ǽ����ޤ��� "����"�Ȥϡ�ñ�˥���ǥå����˥�����󥭡��˰��פ�����ܤ����ä����Ȥ��̣���Ƥ�������Ǥ��� ���ץ뤬ɬ���ҡ������¸�ߤ��뤳�Ȥ䡢�ƤӽФ����Υ��ʥåץ���åȤλ���̲ᤷ�����Ȥ��̣���ƤϤ��ޤ��� �����ζǤˤϡ�amgettuple��scan->xs_recheck�򿿤����������ꤷ�ʤ���Фʤ�ޤ��� ���ΰ�̣�ϡ�����ǥå������ܤ��μ¤˥�����󥭡��˰��פ��뤳�ȤǤ��� ���ΰ�̣�ϡ����줬�Τ��ʤ��ȤǤϤʤ���������󥭡���ɽ�����줿��郎�ҡ��ץ��ץ����Ф��줿��ǺƸ�������ʤ���Фʤ�ʤ����ȤǤ��� �����к���"��ĵ�"����ǥå����黻�Ҥ�ٱ礷�ޤ��� �Ƹ����ϥ��������Τߤ˳���Ŭ�Ѥ���뤳�Ȥ����դ��Ƥ��������� ��ʬ����ǥå����Ҹ�ʤ⤷����Сˤ�amgettuple�ƤӽФ����Ƿ褷�ƺƸ�������ޤ���

amgettuple�ؿ��ϡ����������᥽�åɤ�"ñ��"����ǥå����������򥵥ݡ��Ȥ���Ȥ��Τ��󶡤����ɬ�פ�����ޤ��� �����Ǥʤ���С�pg_am�Ԥ�amgettuple�ե�����ɤϥ��������ꤵ��ʤ���Фʤ�ޤ���

int64
amgetbitmap (IndexScanDesc scan,
             TIDBitmap *tbm);

���ꤵ�줿������󤫤����ƤΥ��ץ����Ф����ƤӽФ�¦���󶡤���TIDBitmap�ˤ������ղä��ޤ� �ʤĤޤꡢ���˥ӥåȥޥå���ˤ��뽸��ȥ��ץ�ID�ν���Ȥ�OR����ޤ��ˡ� ���Ф��줿���ץ�����֤���ޤ����㤨�Ф����Ĥ���AM�Ͻ�ʣ�򸡽Ф��ޤ���Τǡ������ñ�ʤ복���Ǥ��ˡ� ���ץ�ID��ӥåȥޥåפ���������֡�amgetbitmap������Υ��ץ�ID��ɬ�פʥ��������κƸ����򼨤����Ȥ���ǽ�Ǥ��� �����amgettuple��xs_recheck���ϥѥ�᡼����������Ƥ��ޤ��� ���ա����ߤμ����ˤ����Ƥ��ε�ǽ���󶡤ϥӥåȥޥåפ��Τ�Τ���ĵճ�Ǽ���󶡤���Τ˷�ӤĤ��Ƥ��ơ������ƤӽФ�¦�ϥ�����������ʬ����ǥå����ν�����¸�ߤ���Сˤ�Ƹ�����ǽ�ʥ��ץ���Ф��ƺƸ������ޤ��� �Ȥϸ��äƤ����������Ȥϸ¤�ޤ��� amgetmulti�����amgettuple��Ʊ������ǥå������������ǻ��Ѥ��뤳�ȤϤǤ��ޤ��� 項51.3�����������̤ꡢamgetbitmap����Ѥ�����ˤ�¾�ˤ����¤�����ޤ���

amgetbitmap�ؿ��ϥ��������᥽�åɤ�"�ӥåȥޥå�"����ǥå����������򥵥ݡ��Ȥ��Ƥ�����Τ�ɬ�פǤ��� �����Ǥʤ���С�pg_am�Ԥ����amgetbitmap�ե�����ɤϥ��������ꤵ��ʤ���Фʤ�ޤ���

void
amrescan (IndexScanDesc scan,
          ScanKey key);

���ꤵ�줿��������Ƶ�ư���ޤ��� ������󥭡��򿷤������뤳�Ȥ�Ǥ��ޤ��� �ʸŤ������Τޤ޷�³����ˤϡ�key��NULL���Ϥ��ޤ����� �����ο����ѹ����뤳�ȤϤǤ��ʤ����Ȥ����դ��Ƥ��������� �ºݤˤϡ�����Ҿ��롼�׷��ˤ�äƿ������������ץ뤬���򤵤졢Ʊ��������󥭡���¤�Τǿ�������������ͤ�ɬ�פȤ��줿���ˡ����κƵ�ư��ǽ�ϻ��Ѥ���ޤ��� �ƥ����������ǤϤʤ�����ǥå����������ν������ˤ���Ѥ���ޤ��Τǡ����δؿ��Ϥޤ�RelationGetIndexScan()�����ƤӽФ���ޤ���

void
amendscan (IndexScanDesc scan);

����������ߤ����꥽������������ޤ��� scan��¤�μ��Τϲ������٤��ǤϤ���ޤ��� ���������᥽�åɤ�����Ū�˼��줿���å���ԥ�ϲ������ʤ���Фʤ�ޤ���

void
ammarkpos (IndexScanDesc scan);

���ߤΥ��������֤�Ͽ���ޤ��� ���������᥽�åɤ�1�������������1�Ĥε�Ͽ�Ѥߥ������Τߤ򥵥ݡ��Ȥ��ʤ���Фʤ�ޤ���

void
amrestrpos (IndexScanDesc scan);

��äȤ�Ƕ�˵�Ͽ���줿���֤˥��������ᤷ�ޤ���

�������Τ���ˡ�����ǥå������������᥽�åɴؿ���pg_proc���ܤϡ����Τʰ����ο��򼨤��ʤ���Фʤ�ޤ��� �������������Ϥ��٤�internal���Ȥ���������ޤ��� �ʰ����ΤۤȤ�ɤ�SQL�Ǥ�̤�Τη�����Ĥ��ᡢ�桼�������������ؿ���ľ�ܸƤӽФ����Ȥ��ɤ����Ȥ�������ͳ�Ǥ����� ����ͤη��ϡ�void��internal��boolean�Τ����줫��Ŭ�ڤ��������ޤ��� ͣ����㳰��amoptions�Ǥ��� ����ϡ�text[]�����bool����bytea���֤��褦��������������ʤ���Фʤ�ޤ��� ���ε���ˤ�ꡢ���饤����ȥ����ɤ�amoptions��¹Ԥ��ƥ��ץ����������ͭ�����򸡺����뤳�Ȥ��Ǥ��ޤ���