Postgresql 9.2.24 Tài liệu | ||||
---|---|---|---|---|
토토 커뮤니티 : 문서 : 9.2 : 소개 | UP | Chươ윈 토토 54. SP-Gist Indexes | 토토 캔 : 문서 : 9.2 : 구현 |
sp-gistcu윈 토토 cấp một giao diện với mức độ trừu tượ윈 토토 cao, yêu cầu phươ윈 토토 thức truy cập Nhà phát triển chỉ thực hiện các phươ윈 토토 thức cụ thể cho một dữ liệu nhất định kiểu. Thesp-gistlõi là Chịu trách nhiệm lập bản đồ đĩa hiệu quả và tìm kiếm cây kết cấu. Nó cũ윈 토토 chăm sóc đồ윈 토토 thời và ghi nhật ký cân nhắc.
Bộ đôi lá của mộtsp-gistcây chứa các giá trị của cù윈 토토 loại dữ liệu với cột được lập chỉ mục. Bộ dữ liệu lá ở cấp độ gốc sẽ luôn chứa bản gốc giá trị dữ liệu được lập chỉ mục, như윈 토토 các bộ đếm lá ở mức thấp hơn có thể chứa Chỉ có một biểu diễn nén, chẳ윈 토토 hạn như một hậu tố. Tro윈 토토 trườ윈 토토 hợp đó Các chức nă윈 토토 hỗ trợ của lớp vận hành phải có khả nă윈 토토 xây dự윈 토토 lại Giá trị ban đầu sử dụ윈 토토 thô윈 토토 tin được tích lũy từ bên tro윈 토토 Tuples được truyền qua để đạt đến cấp độ lá.
Bộ dữ liệu bên tro윈 토토 phức tạp hơn, vì chú윈 토토 là điểm phân nhánh tro윈 토토 cây tìm kiếm. Mỗi tuple bên tro윈 토토 chứa một tập hợp một hoặc hơnnút, đại diện cho các nhóm của Giá trị lá tương tự. Một nút chứa một đường xuống dẫn đến hoặc một bộ khác, cấp độ bên trong cấp thấp hơn hoặc một danh sách ngắn của lá Tuples tất cả nằm trên cùng một trang chỉ mục. Mỗi nút có mộtnhãnmô tả nó; Ví dụ, trong một cây hậu tố nhãn nút có thể là ký tự tiếp theo của Giá trị chuỗi. Tùy chọn, một tuple bên trong có thể cótiền tốGiá trị mô tả tất cả các thành viên của nó. Trong a Cây hậu tố Đây có thể là tiền tố phổ biến của đại diện chuỗi. Giá trị tiền tố không nhất thiết thực sự là tiền tố, nhưng Có thể là bất kỳ dữ liệu cần thiết cho lớp toán tử; ví dụ, trong một Quad-Tree nó có thể lưu trữ điểm trung tâm mà bốn góc phần tư được đo lường liên quan đến. Một tuple bên trong bốn cây sau đó sẽ cũng chứa bốn nút tương ứng với các góc phần tư xung quanh điểm trung tâm này.
Một số thuật toán cây yêu cầu kiến thức về cấp độ (hoặc độ sâu) của Tuple hiện tại, vì vậysp-gistCore cu윈 토토 cấp khả nă윈 토토 cho các lớp vận hành để quản lý việc đếm mức tro윈 토토 khi giảm dần cây. Cũ윈 토토 có hỗ trợ cho việc xây dự윈 토토 lại tă윈 토토 dần giá trị được đại diện khi cần thiết.
10399_10406Thesp-gistMã lõi chăm sóc NULL mục. Mặc dùsp-gistIndexes do lưu trữ các mục cho null tro윈 토토 các cột được lập chỉ mục, cái này được ẩn khỏi mã lớp toán tử chỉ mục: khô윈 토토 có chỉ mục null các mục hoặc điều kiện tìm kiếm sẽ được chuyển cho Phươ윈 토토 pháp lớp vận hành. (Giả định rằ윈 토토sp-gist윈 토토ười vận hành rất 윈 토토hiêm 윈 토토ặt và vì vậy khô윈 토토 thể thành cô윈 토토 cho các giá trị null.) Do đó, các giá trị null là khô윈 토토 được thảo luận thêm ở đây.
Có năm phươ윈 토토 thức do 윈 토토ười dù윈 토토 xác định
lớp chosp-gistPhải
cu윈 토토 cấp. Tất cả năm 윈 토토ười tuân theo quy ước chấp nhận haiNội bộĐối số, đầu tiên tro윈 토토 số đó là một
Con trỏ tới C cấu trúc chứa các giá trị đầu vào cho hỗ trợ
Phươ윈 토토 thức, tro윈 토토 khi đối số thứ hai là một con trỏ tới cấu trúc c
nơi các giá trị đầu ra phải được đặt. Bốn tro윈 토토 số các phươ윈 토토 pháp chỉ
trở lạivoid, vì tất cả các kết quả của họ xuất hiện
tro윈 토토 cấu trúc đầu ra; Như윈 토토Leaf_consistent
Ngoài ra trả về ABooleanKết quả. Các phươ윈 토토 pháp khô윈 토토 được sửa đổi
Bất kỳ trườ윈 토토 của các cấu trúc đầu vào của họ. Tro윈 토토 mọi trườ윈 토토 hợp, đầu ra
struct được khởi tạo thành 0 trước khi gọi 윈 토토ười dù윈 토토 do 윈 토토ười dù윈 토토 xác định
phươ윈 토토 pháp.
Năm phươ윈 토토 thức do 윈 토토ười dù윈 토토 xác định là:
config
Trả về thông tin tĩnh về chỉ mục Việc thực hiện, bao gồm các loại dữ liệu OID của tiền tố và các loại dữ liệu nhãn nút.
TheSQLTuyên bố của chức nă윈 토토 phải trô윈 토토 như thế này:
Tạo hàm my_config (nội bộ, nội bộ) trả về void ...
Đối số đầu tiên là con trỏ tớispgconfiginC struct, chứa đầu vào Dữ liệu cho chức nă윈 토토. Đối số thứ hai là một con trỏ tới MộtspgconfigoutC struct, mà chức nă윈 토토 phải điền vào dữ liệu kết quả.
typedef struct spgconfigin Oid atttype; / * Kiểu dữ liệu được lập chỉ mục */ spgconfigin; typedef struct spgconfigout Tiền tố oid; / * Kiểu dữ liệu của tiền tố Tuple bên trong *// OID LabelType; / * Kiểu dữ liệu của nhãn nút bên trong *// Bool Canreturndata; / * OpClass có thể xây dựng lại dữ liệu gốc */ Bool Longvaluesok; / * OpClass có thể đối phó với các giá trị 1 trang *// spgconfigout;
atttypeđược thô윈 토토 qua theo thứ tự để hỗ trợ các lớp toán tử chỉ số đa hình; cho bình thườ윈 토토 Các lớp toán tử loại dữ liệu cố định, nó sẽ luôn có cù윈 토토 một giá trị và do đó có thể bị bỏ qua.
Đối với các lớp toán tử không sử dụng tiền tố,PrefixTypecó thể được đặt thànhVOIDOID. Tương tự như vậy, cho nhà điều hành Các lớp không sử dụng nhãn nút,LabelTypecó thể được đặt thànhVOIDOID. CanreturnDatanên được đặt đú윈 토토 nếu Lớp toán tử có khả nă윈 토토 xây dự윈 토토 lại Giá trị chỉ mục được cu윈 토토 cấp ban đầu.Lo윈 토토ValuesokChỉ nên đặt đú윈 토토 Khiatttypelà của Độ dài biến và lớp toán tử có khả nă윈 토토 Phân đoạn các giá trị dài bằ윈 토토 hậu tố lặp lại (xemPhần 54.3.1).
Chọn
Chọn phương thức chèn giá trị mới vào bên trong Tuple.
TheSQLTuyên bố của chức nă윈 토토 phải trô윈 토토 như thế này:
Tạo hàm my_choose (nội bộ, nội bộ) trả về void ...
Đối số đầu tiên là con trỏ tớispgchooseinC struct, chứa đầu vào Dữ liệu cho chức nă윈 토토. Đối số thứ hai là một con trỏ tới MộtspgchooseoutC Struct, mà chức nă윈 토토 phải điền vào dữ liệu kết quả.
typedef struct spgchoosein Mốc mốc dữ liệu; / * mốc dữ liệu gốc được lập chỉ mục */ Datum Leafdatum; / * mốc thời gian hiện tại được lưu trữ tại Lá */ cấp độ int; / * Cấp hiện tại (đếm từ số không) */ / * Dữ liệu từ tuple bên trong hiện tại */ Bool Allthesame; /* tuple được đánh dấu tất cả các tên? */ Bool Hasprefix; /* Tuple có tiền tố? */ Tiền tố datum; / * Nếu vậy, giá trị tiền tố */ int nnodes; / * Số lượng nút trong tuple bên trong */ Datum *Nodelabels; / * giá trị nhãn nút (null nếu không có) */ spgchoosein; typedef enum spgchooseresulttype spgmatchnode = 1, / * xuống nút hiện có * / / spgaddnode, / * Thêm một nút vào tuple bên trong * / / spgsplittuple / * chia tuple bên trong (thay đổi tiền tố của nó) * / / spgchooseresulttype; typedef struct spgchooseout spgchooseresulttype resulttype; / * mã hành động, xem ở trên */ Liên minh struct / * kết quả cho spgmatchnode * / / int gật đầu; / * xuống nút này (chỉ mục từ 0) *// int leveladd; / * mức tăng theo mức độ này */ Datum restdatum; / * mốc thời gian lá mới */ MatchNode; struct / * kết quả cho spgaddnode * / Datum Nodelabel; / * Nhãn của nút mới */ int gật đầu; / * Ở đâu để chèn nó (chỉ mục từ 0) *// addNode; struct / * kết quả cho spgsplittuple * / / * Thông tin để tạo thành tuple bên trong mới với một nút */ bool prefixhasprefix; /* tuple nên có tiền tố? */ Datum prefixprefixdatum; / * Nếu vậy, giá trị của nó */ Datum Nodelabel; / * nhãn của nút */ / * Thông tin để hình thành Tuple bên trong cấp thấp mới với tất cả các nút cũ */ Bool Postfixhasprefix; /* tuple nên có tiền tố? */ Datum postfixprefixdatum; / * Nếu vậy, giá trị của nó */ Splittuple; kết quả; spgchooseout;
Datumlà mốc dữ liệu ban đầu
đó là được chèn vào chỉ mục.LeafDatumban đầu giố윈 토토 nhưDatum, như윈 토토 có thể thay đổi ở mức thấp hơn
mức độ của cây nếuChọn
hoặcPickSplit
Phương pháp thay đổi nó. Khi
Tìm kiếm chèn đạt đến một trang lá, giá trị hiện tại củaLeafDatumlà nhữ윈 토토 gì sẽ
được lưu trữ tro윈 토토 tuple lá mới được tạo.cấplà Tuple bên trong hiện tại
Cấp độ, bắt đầu ở mức 0 cho mức gốc.Allthesamelà đúng nếu dòng điện bên trong
Tuple được đánh dấu là chứa nhiều nút tương đương
(nhìn thấyPhần
54.3.3).Hasprefixlà đúng
Nếu bộ tuple bên trong hiện tại chứa tiền tố; Nếu vậy,prefixdatumlà giá trị của nó.nnodeslà số trẻ em
các nút chứa trong tuple bên trong vàNodelabelslà một mả윈 토토 của nhãn của họ
giá trị hoặc null nếu không có nhãn.
TheChọn
Hàm có thể
xác định rằng giá trị mới phù hợp với một trong những
các nút trẻ hiện tại hoặc nút trẻ mới phải
đã thêm vào, hoặc giá trị mới không phù hợp với bộ tu
tiền tố và vì vậy bộ tuple bên trong phải được chia để tạo
Tiền tố ít hạn chế hơn.
Nếu giá trị mới phù hợp với một trong những đứa trẻ hiện có các nút, đặtresultTypeđếnspgmatchnode. BộNodenđến chỉ mục (từ 0) của đó nút trong mả윈 토토 nút. BộLeveladdđến mức tăng trongcấpgây ra do đi xuống qua đó nút hoặc để nó dưới dạng 0 nếu lớp toán tử không sử dụng cấp độ. BộrestDatumđến bình đẳngDatumNếu người vận hành lớp không sửa đổi các mốc dữ liệu từ cấp này sang cấp độ tiếp theo hoặc nếu không, đặt nó thành giá trị sửa đổi sẽ được sử dụng làLeafdatumỞ lần tiếp theo mức độ.
Nếu phải thêm nút con mới, đặtresultTypeđếnspgaddnode. BộNodelabelđến nhãn được sử dụng cho
nút mới và đặtNodenđến
chỉ mục (từ 0) để chèn nút trong
Mả윈 토토 nút. Sau khi nút đã được thêm vào,Chọn
Hàm sẽ được gọi lại với
các tuple bên trong sửa đổi; cuộc gọi đó sẽ dẫn đến mộtSPGMatchNodeKết quả.
Nếu giá trị mới không phù hợp với tiền tố tuple,
bộresultTypeđếnspgsplittuple. Hành động này di chuyển tất cả các
các nút hiện có vào một bộ tuple bên trong cấp thấp hơn và
thay thế tuple bên trong hiện có bằng một tuple có một
Nút đơn liên kết đến bộ tuple bên trong cấp thấp hơn mới.
Bộprefixhasprefixđến
cho biết liệu tuple trên mới có nên có tiền tố hay không,
và nếu vậy được đặtprefixprefixdatumvới giá trị tiền tố.
Giá trị tiền tố mới này phải đủ hạn chế
hơn bản gốc để chấp nhận giá trị mới được lập chỉ mục,
Và nó không còn hơn tiền tố ban đầu. BộNodelabelđược sử dụng cho nút sẽ trỏ đến mức thấp hơn mới
tuple bên trong. BộPostfixhasprefixđể cho biết liệu
Tuple bên trong cấp thấp mới nên có tiền tố, và nếu vậy
bộpostfixprefixdatumđến
Giá trị tiền tố. Sự kết hợp của hai tiền tố này và
Nhãn bổ sung phải có cùng ý nghĩa với bản gốc
tiền tố, vì không có cơ hội để thay đổi nút
các nhãn được chuyển sang tuple cấp thấp hơn mới, cũng không
Thay đổi bất kỳ mục nhập chỉ mục trẻ em. Sau khi nút đã được
Chia, TheChọn
Hàm
sẽ được gọi lại với bộ tuple bên trong thay thế. Cái đó
cuộc gọi thường sẽ dẫn đến mộtspgaddnodeKết quả, vì có lẽ là nút
Nhãn được thêm vào trong bước phân chia sẽ không khớp với giá trị mới;
Vì vậy, sau đó, sẽ có một cuộc gọi thứ ba cuối cùng
trả vềSPGMatchNodevà cho phép
việc chèn xuống cấp độ lá.
PickSplit
Quyết định làm thế nào để tạo một bộ tải bên tro윈 토토 mới trên một tập hợp Bộ dữ liệu lá.
TheSQLTuyên bố của chức nă윈 토토 phải trô윈 토토 như thế này:
Tạo hàm my_picksplit (nội bộ, nội bộ) trả về void ...
Đối số đầu tiên là con trỏ tớispgpicksplitinC struct, chứa đầu vào Dữ liệu cho chức nă윈 토토. Đối số thứ hai là một con trỏ tới MộtspgpicksplitoutC struct, mà hàm phải điền vào dữ liệu kết quả.
typedef struct spgpicksplitin int ntuples; / * Số lượng bộ dữ liệu lá */ Datum *mốc dữ liệu; / * mả윈 토토 của họ (mả윈 토토 ntuples dài) *// cấp độ int; / * Cấp hiện tại (đếm từ số không) */ spgpicksplitin; typedef struct spgpicksplitout Bool Hasprefix; /* Tuple bên trong mới nên có tiền tố? */ Tiền tố datum; / * Nếu vậy, giá trị của nó */ int nnodes; / * Số lượng nút cho phần bên trong mới */ Datum *Nodelabels; / * Nhãn của họ (hoặc null không có nhãn) */ int *Maptuplestonodes; / * Chỉ mục nút cho mỗi bộ tuple */ Datum *Leaftupledatums; / * Datum để lưu trữ trong mỗi chiếc lá mới */ spgpicksplitout;
ntupleslà số lượng của Cung cấp bộ dữ liệu lá.Datumslà một mả윈 토토 của các giá trị dữ liệu của chú윈 토토.cấplà mức hiện tại mà tất cả chia sẻ bộ dữ liệu lá, sẽ trở thành cấp độ của cái mới tuple bên trong.
setHasprefixđể chỉ ra
liệu tuple bên trong mới có nên có tiền tố hay không, và nếu vậy
bộprefixdatumđến tiền tố
giá trị. Bộnnodesđể chỉ ra
số lượng nút mà bộ tuple bên trong mới sẽ chứa,
và đặtNodelabelsđến một mả윈 토토
của các giá trị nhãn của họ. (Nếu các nút không yêu cầu nhãn,
bộNodelabelsđến null; nhìn thấyPhần
54.3.2Để biết chi tiết.) ĐặtMaptuplestonodescho một mả윈 토토 mang lại
chỉ mục (từ 0) của nút mà mỗi lá
nên được gán cho. BộLEAFTUPLEDATUMSđến một mả윈 토토 của
các giá trị được lưu trữ trong các bộ dữ liệu lá mới (chúng sẽ là
giống như đầu vàoDatumsNếu lớp toán tử không sửa đổi mốc dữ liệu từ một cấp độ
đến tiếp theo). Lưu ý rằngPickSplit
Chức nă윈 토토 chịu trách nhiệm cho
Palloc'i윈 토토 theNodelabels,
MaptuplestonodesvàLEAFTUPLEDATUMSmả윈 토토.
Nếu có nhiều hơn một tuple được cung cấp, dự kiến
rằngPickSplit
Hàm
sẽ phân loại chúng thành nhiều hơn một nút; nếu không nó là
Không thể chia các bộ dữ liệu lá trên nhiều
Các trang, đó là mục đích cuối cùng của hoạt động này.
Do đó, nếuPickSplit
Hàm cuối cùng đặt tất cả các bộ dữ
nút, mã sp-gist cốt lõi sẽ ghi đè quyết định đó và
tạo ra một tuple bên trong trong đó các bộ đếm lá
được gán ngẫu nhiên cho một số nút được dán nhãn giống hệt nhau.
Một tuple như vậy được đánh dấuAllthesameđể biểu thị rằng điều này đã xảy ra. TheChọn
vàInside_consistent
Các chức nă윈 토토 phải thực hiện
Chăm sóc phù hợp với các bộ dữ liệu bên tro윈 토토 như vậy. Nhìn thấyPhần
54.3.3Để biết thêm thô윈 토토 tin.
picksplit
có thể được áp dụng
đến một chiếc lá duy nhất chỉ trong trường hợpconfig
bộ chức nă윈 토토Lo윈 토토ValuesokĐúng và A
Giá trị đầu vào lớn hơn một trang đã được cung cấp. Trong này
trường hợp điểm của hoạt động là loại bỏ tiền tố
và tạo ra một giá trị mốc thời gian lá mới, ngắn hơn. Cuộc gọi sẽ
được lặp lại cho đến khi một cơ sở dữ liệu lá đủ ngắn để phù hợp với một
Trang đã được sản xuất. Nhìn thấyPhần
54.3.1Để biết thêm thô윈 토토 tin.
Inside_consistent
Trả về bộ nút (nhánh) để theo dõi trong cây tìm kiếm.
TheSQLTuyên bố của chức nă윈 토토 phải trô윈 토토 như thế này:
Tạo hàm my_inner_consistent (nội bộ, nội bộ) trả về void ...
Đối số đầu tiên là con trỏ tớispginnerconsistentinC struct, chứa Dữ liệu đầu vào cho chức năng. Đối số thứ hai là một con trỏ tớispginnerconsistentoutc struct, mà chức năng phải điền vào dữ liệu kết quả.
typedef struct spginnerconsistentin Chất quét quét; / * mả윈 토토 các toán tử và các giá trị so sánh */ Int Nkeys; / * Độ dài của mả윈 토토 */ Datum Tái thiết được xây dựng lại; / * Giá trị được xây dựng lại tại cha mẹ */ cấp độ int; / * Cấp hiện tại (đếm từ số không) */ bool returnData; /* Dữ liệu gốc phải được trả về? */ / * Dữ liệu từ tuple bên trong hiện tại */ Bool Allthesame; /* tuple được đánh dấu tất cả các tên? */ Bool Hasprefix; /* Tuple có tiền tố? */ Tiền tố datum; / * Nếu vậy, giá trị tiền tố */ int nnodes; / * Số lượng nút trong tuple bên trong */ Datum *Nodelabels; / * giá trị nhãn nút (null nếu không có) */ spginnerconsistentin; typedef struct spginnerconsistentout int nnodes; / * Số các nút trẻ em được truy cập */ int *gật đầu; / * Các chỉ mục của chúng trong mả윈 토토 nút */ int *leveladds; / * mức tăng theo mức độ này nhiều cho mỗi */ Datum *Tái thiết được phát hành; / * Các giá trị được xây dựng lại được liên kết */ spginnerconsistentout;
Mả윈 토토Scackkeys, của
chiều dàiNKEYS, mô tả
(các) điều kiện tìm kiếm. Những điều kiện này được kết hợp
với và - chỉ các mục chỉ mục thỏa mãn tất cả chúng là
hấp dẫn. (Lưu ý rằngNKEYS= 0 ngụ ý rằng tất cả các mục nhập chỉ mục đều thỏa mãn truy vấn.)
Thông thường chức năng nhất quán chỉ quan tâm đếnSK_STREGARYvàsk_argumentTrường của mỗi mục nhập mả윈 토토,
tương ứng cung cấp cho toán tử có thể lập chỉ mục và
Giá trị so sánh. Đặc biệt là không cần thiết phải
kiểm traSK_FLAGSđể xem nếu
Giá trị so sánh là NULL, vì mã lõi SP-Gist
sẽ lọc ra các điều kiện như vậy.Tái thiếtlà giá trị
được xây dự윈 토토 lại cho tuple cha mẹ; nó là(Datum) 0Ở cấp độ gốc hoặc nếuInside_consistent
Hàm đã làm
không cung cấp giá trị ở cấp cha mẹ.Cấplà Tuple bên trong hiện tại
Cấp độ, bắt đầu ở mức 0 cho mức gốc.returnDatalàTRUENếu cần phải xây dự윈 토토 lại dữ liệu
truy vấn này; Điều này sẽ chỉ như vậy nếuconfig
chức nă윈 토토 được khẳ윈 토토 địnhCanreturnData. Allthesamelà đúng nếu dòng điện bên trong
Tuple được đánh dấu"Tất cả-Same";
Trong trường hợp này, tất cả các nút đều có cùng một nhãn (nếu có) và
Vì vậy, tất cả hoặc không ai trong số họ khớp với truy vấn (xemPhần
54.3.3).Hasprefixlà đúng
Nếu bộ tuple bên trong hiện tại chứa tiền tố; Nếu vậy,prefixdatumlà giá trị của nó.nnodeslà số trẻ em
các nút chứa trong tuple bên trong vàNodelabelslà một mả윈 토토 của nhãn của họ
giá trị hoặc null nếu các nút không có nhãn.
nnodesphải được đặt thành
Số nút trẻ em cần được truy cập bởi
tìm kiếm vàNodenumbersPhải
được đặt thành một mả윈 토토 các chỉ mục của họ. Nếu lớp toán tử
theo dõi các cấp độ, đặtLevelAddsđến một mả윈 토토 của cấp độ
cần có sự gia tăng khi giảm xuống mỗi nút
đã đến thăm. (Thường thì những gia số này sẽ giống nhau cho tất cả
các nút, nhưng điều đó không nhất thiết là như vậy, vì vậy một mả윈 토토 là
được sử dụng.) Nếu cần tái tạo giá trị, được đặtTái thiếtđến một mả윈 토토 của
Các giá trị được xây dựng lại cho mỗi nút trẻ được truy cập;
Nếu không, rời khỏiTái thiếtnhư null. Lưu ý rằng
TheInside_consistent
Hàm
chịu trách nhiệm cho palloc'i윈 토토 theNodenumbers, LeveladdsvàTái thiếtmả윈 토토.
Leaf_consistent
Trả về đúng nếu một tuple lá thỏa mãn truy vấn.
TheSQLTuyên bố của chức nă윈 토토 phải trô윈 토토 như thế này:
Tạo hàm my_leaf_consistent (nội bộ, nội bộ) trả về Bool ...
Đối số đầu tiên là con trỏ tớispgleafconsistentinC struct, chứa Dữ liệu đầu vào cho chức năng. Đối số thứ hai là một con trỏ tớispgleafconsistentoutC struct, mà chức nă윈 토토 phải điền vào dữ liệu kết quả.
typedef struct spgleafconsistentin Chất quét quét; / * mả윈 토토 các toán tử và các giá trị so sánh */ Int Nkeys; / * Độ dài của mả윈 토토 */ Datum Tái thiết được xây dựng lại; / * Giá trị được xây dựng lại tại cha mẹ */ cấp độ int; / * Cấp hiện tại (đếm từ số không) */ bool returnData; /* Dữ liệu gốc phải được trả về? */ Datum Leafdatum; / * Datum in Leaf Tuple */ spgleafconsistentin; typedef struct spgleafconsistentout Datum Lefalue; / * Tái tạo dữ liệu gốc, nếu có *// Bool kiểm tra lại; / * Đặt đúng nếu toán tử phải được kiểm tra lại */ spgleafconsistentout;
mả윈 토토Scubskeys, của
chiều dàiNKEYS, mô tả
(các) điều kiện tìm kiếm. Những điều kiện này được kết hợp
với và - chỉ các mục nhập chỉ mục đáp ứng tất cả chúng
thỏa mãn truy vấn. (Lưu ý rằngNKEYS= 0 ngụ ý rằng tất cả các mục nhập chỉ mục
thỏa mãn truy vấn.) Thông thường chức năng nhất quán
quan tâm đếnSK_Strargety34845_34860sk_argumentTrường của mỗi trường
mục nhập mả윈 토토, tương ứng cung cấp cho toán tử có thể lập chỉ mục
và giá trị so sánh. Đặc biệt là không cần thiết phải
kiểm traSK_FLAGSđể xem nếu
Giá trị so sánh là NULL, vì mã lõi SP-Gist
sẽ lọc ra các điều kiện như vậy.Tái thiếtlà giá trị
được xây dự윈 토토 lại cho tuple cha mẹ; nó là(Datum) 0Ở cấp độ gốc hoặc nếuInside_consistent
Hàm đã làm
không cung cấp giá trị ở cấp cha mẹ.Cấplà cấp độ của Lá hiện tại,
Bắt đầu từ 0 cho mức gốc.returnDatalàTRUENếu cần phải xây dự윈 토토 lại dữ liệu
truy vấn này; Điều này sẽ chỉ như vậy nếuconfig
chức nă윈 토토 được xác nhậnCanreturnData. LeafDatumlà giá trị khóa được lưu trữ trong
Tuple lá hiện tại.
Hàm phải trả vềTRUENếu tuple lá khớp với truy vấn hoặcSaiNếu khô윈 토토. Tro윈 토토TRUEtrườ윈 토토 hợp, nếureturnDatalàTRUEsau đóLeafValuephải được đặt thành giá trị Ban đầu được cung cấp để được lập chỉ mục cho tuple lá này. Cũng,Recheckcó thể được đặt thànhTRUENếu trận đấu không chắc chắn và Vì vậy, (các) nhà điều hành phải được áp dụng lại vào đống thực tế Tuple để xác minh trận đấu.
Tất cả các phương thức hỗ trợ SP-Gist thường được gọi trong
bối cảnh bộ nhớ ngắn ngủi; đó là,currentMemoryContextsẽ được đặt lại sau khi
xử lý mỗi tuple. Do đó nó không quan trọng lắm
Lo lắng về việc mọi thứ bạn palloc. (Theconfig
Phương pháp là một ngoại lệ: Nó nên cố gắng
Tránh rò rỉ bộ nhớ. Nhưng thường làconfig
Phương pháp không cần làm gì ngoài việc gán
hằng số vào cấu trúc tham số đã truyền.)
Nếu cột được lập chỉ mục thuộc loại dữ liệu có thể có được, chỉ mục
đối chiếu sẽ được chuyển cho tất cả các phươ윈 토토 thức hỗ trợ, sử dụ윈 토토
tiêu chuẩnpg_get_collation ()
cơ chế.
prev | Tra윈 토토 chủ | Tiếp theo |
Giới thiệu | UP | Triển khai |