như trongBảng 37.9, Btree xác định một chức kèo bóng đá cúp c2 hỗ trợ tùy chọn và bốn yêu cầu. Năm phương thức do người dùng xác định là:
đặt hàng
Đối với mỗi kết hợp các loại dữ liệu mà họ vận hành Btree cung cấp các toán tử so sánh, nó phải cung cấp chức kèo bóng đá cúp c2 hỗ trợ so sánh, được đăng ký trongpg_amproc
với chức kèo bóng đá cúp c2 hỗ trợ số 1 vàAmprocleftType
/AmprocrightType
bằng với kèo bóng đá cúp c2 loại dữ liệu bên trái và bên phải để so sánh (nghĩa là, kèo bóng đá cúp c2 loại dữ liệu tương tự mà kèo bóng đá cúp c2 toán tử phù hợp được đăng ký trongpg_amop
). Hàm so sánh phải lấy hai giá trị không nullA
vàB
và trả lạiINT32
Giá trị đó là<
0
, 0
hoặc
0
khiA
<
B
, A
=
B
hoặcA
B
, tương ứng. Một kết quả null không được phép: Tất cả kèo bóng đá cúp c2 giá trị của kiểu dữ liệu phải được so sánh.src/backend/access/nbtree/nbtcompare.c
cho kèo bóng đá cúp c2 ví dụ.
8658_8814pg_get_collation ()
cơ chế.
Sortsupport
Tùy chọn, kèo bóng đá cúp c2 họ vận hành Btree có thể cung cấpSắp xếp hỗ trợHàm (s), được đăng ký theo hàm hỗ trợ số 2. Các chức kèo bóng đá cúp c2 này cho phép thực hiện các so sánh cho mục đích sắp xếp theo cách hiệu quả hơn so với việc gọi hàm hỗ trợ so sánh. API liên quan đến điều này được xác định trongSRC/bao gồm/Utils/Sortsupport.h
.
in_range
Tùy chọn, kèo bóng đá cúp c2 họ vận hành Btree có thể cung cấpin_rangeHỗ trợ (s), được đăng ký theo hàm hỗ trợ số 3. Chúng không được sử dụng trong kèo bóng đá cúp c2 hoạt động chỉ mục BTREE; Thay vào đó, họ mở rộng ngữ nghĩa của gia đình vận hành để nó có thể hỗ trợ kèo bóng đá cúp c2 điều khoản cửa sổ chứaphạm vi
Offset
trước
vàphạm vi
Offset
sau
kèo bóng đá cúp c2 loại ràng buộc khung (xemPhần 4.2.8). Về cơ bản, thông tin bổ sung được cung cấp là cách thêm hoặc trừ kèo bóng đá cúp c2Offset
Giá trị theo cách tương thích với thứ tự dữ kèo bóng đá cúp c2 của gia đình.
ANin_range
Hàm phải có chữ ký
in_range (Val
Type1,cơ sở
Type1,Offset
Type2,sub
bool,Bool)
Val
vàcơ sở
Phải cùng loại, là kèo bóng đá cúp c2 trong những loại được họ hỗ trợ bởi họ nhà điều hành (nghĩa là, kèo bóng đá cúp c2 loại mà nó cung cấp kèo bóng đá cúp c2 đơn đặt hàng). Tuy nhiên,Offset
có thể thuộc loại khác, có thể là kèo bóng đá cúp c2 loại khác không được gia đình không hỗ trợ. kèo bóng đá cúp c2 ví dụ là tích hợpTime_ops
Gia đình cung cấpin_range
Hàm cóOffset
thuộc loạiKhoảng
. kèo bóng đá cúp c2 gia đình có thể cung cấpin_range
Hàm cho bất kỳ loại được hỗ trợ nào và kèo bóng đá cúp c2 hoặc nhiềuOffset
Loại. Mỗiin_range
Hàm nên được nhập vàopg_amproc
vớiAmprocleftType
bằngType1
vàAmprocrightType
bằngType2
.
ngữ nghĩa thiết yếu của kèo bóng đá cúp c2in_range
Hàm phụ thuộc vào hai tham số cờ Boolean. Nó sẽ thêm hoặc trừcơ sở
vàOffset
, sau đó so sánhVal
đến kết quả, như sau:
nếu!
sub
và!
, return
Val
=
(cơ sở
+
Offset
)
nếu!
sub
và, return
Val
<=
(cơ sở
+
Offset
)
nếusub
và!
, return
Val
=
(cơ sở
-
Offset
)
nếusub
và, return
Val
<=
(cơ sở
-
Offset
)
Trước khi làm như vậy, chức kèo bóng đá cúp c2 nên kiểm tra dấu hiệu củaOffset
: Nếu nó nhỏ hơn 0, hãy tăng lỗierrcode_invalid_preceding_or_following_size
(22013) với văn bản lỗi nhưkích thước trước hoặc sau không hợp lệ trong hàm cửa sổ. .in_range
Hàm để mã lõi không cần hiểuÍt hơn 0Hồicó nghĩa là cho một kiểu dữ kèo bóng đá cúp c2 cụ thể.
kèo bóng đá cúp c2 kỳ vọng bổ sung làin_range
Các chức kèo bóng đá cúp c2 nên, nếu thực tế, tránh ném lỗi nếucơ sở
+
Offset
hoặccơ sở
-
Offset
Sẽ tràn. Kết quả so sánh chính xác có thể được xác định ngay cả khi giá trị đó sẽ nằm ngoài phạm vi của kiểu dữ kèo bóng đá cúp c2.HồiVô cựcHồihoặcNAN, có thể cần thêm sự chăm sóc để đảm bảo rằngin_range
S kết quả đồng ý với thứ tự sắp xếp thông thường của họ vận hành.
Kết quả củain_range
Hàm phải phù hợp với thứ tự sắp xếp được áp đặt bởi gia đình người vận hành. Để chính xác, đưa ra bất kỳ giá trị cố định nào củaOffset
vàsub
, sau đó:
nếuin_range
với= Đúng là đúng đối với kèo bóng đá cúp c2 số
Val1
vàcơ sở
, nó phải đúng với mọiVal2
<=
Val1
Với cùng kèo bóng đá cúp c2cơ sở
.
nếuin_range
với= true là sai đối với kèo bóng đá cúp c2 số
Val1
vàcơ sở
, nó phải sai cho mỗiVal2
=
Val1
với cùng kèo bóng đá cúp c2cơ sở
.
nếuin_range
với= Đúng là đúng đối với kèo bóng đá cúp c2 số
Val
vàBase1
, nó phải đúng với mọibase2
=
Base1
với cùng kèo bóng đá cúp c2Val
.
nếuin_range
với= true là sai đối với kèo bóng đá cúp c2 số
Val
vàBase1
, nó phải sai cho mỗibase2
<=
Base1
với cùng kèo bóng đá cúp c2Val
.
kèo bóng đá cúp c2 câu tương tự với kèo bóng đá cúp c2 điều kiện đảo ngược giữ khiít
= Sai.
Nếu loại được đặt hàng (Type1
) có thể có được, đối chiếu thích hợp OID sẽ được chuyển choin_range
Hàm, sử dụng cơ chế pg_get_collation () tiêu chuẩn.
in_range
Các chức kèo bóng đá cúp c2 không cần xử lý các đầu vào null và thông thường sẽ được đánh dấu nghiêm ngặt.
EqualImage
Tùy chọn, kèo bóng đá cúp c2 họ vận hành Btree có thể cung cấpEqualImage
(Bình đẳng ngụ ý bình đẳng hình ảnh) Các chức kèo bóng đá cúp c2 hỗ trợ, được đăng ký theo chức kèo bóng đá cúp c2 hỗ trợ số 4. Các chức kèo bóng đá cúp c2 này cho phép mã lõi xác định khi nào an toàn để áp dụng tối ưu hóa sao chép Btree. Hiện nay,EqualImage
Các chức kèo bóng đá cúp c2 chỉ được gọi khi xây dựng hoặc xây dựng lại một chỉ mục.
ANEqualImage
Hàm phải có chữ ký
EqualImage (OpcIntype
OID
) Trả về Bool
Giá trị trả về là thông tin tĩnh về lớp vận hành và đối chiếu. Trở vềĐúng
chỉ ra rằngđặt hàng
Hàm cho lớp toán tử được đảm bảo chỉ trả về0
(VangĐối số bằng nhauHồi) Khi nóA
vàB
Đối số cũng có thể hoán đổi cho nhau mà không mất thông tin ngữ nghĩa. Không đăng kýEqualImage
chức kèo bóng đá cúp c2 hoặc trả vềSai
Cho biết rằng điều kiện này không thể được giả định để giữ.
TheOpcIntype
Đối số là
của kiểu dữ kèo bóng đá cúp c2 mà lớp toán tử chỉ mục. Đây là một sự tiện lợi cho phép tái sử dụng cùng một cơ bảnPG_TYPE
.oidEqualImage
hàm trên kèo bóng đá cúp c2 lớp toán tử. Nếu nhưOpcIntype
là một loại dữ kèo bóng đá cúp c2 có kết hợp, đối chiếu thích hợp OID sẽ được chuyển choEqualImage
Hàm, sử dụng tiêu chuẩnpg_get_collation ()
cơ chế.
Theo như lớp toán tử, trả vềTRUE
21141_21236EqualImage
chức kèo bóng đá cúp c2). Tuy nhiên, mã cốt lõi sẽ chỉ coi việc sao chép an toàn cho một chỉ mục khiEveryCột được lập chỉ mục sử dụng lớp toán tử đăng kýEqualImage
Hàm và mỗi hàm thực sự trả vềTRUE
Khi được gọi.
Bình đẳng hình ảnh làgần nhưĐiều kiện tương tự như bình đẳng bitwise đơn giản. Có một sự khác biệt tinh tế: khi lập chỉ mục một loại dữ liệu varlena, biểu diễn trên đĩa của hai hình ảnh bằng kèo bóng đá cúp c2 mốc dữ liệu bằng nhau có thể không bằng nhau do ứng dụng không nhất quán củabánh mì nướngnén trên đầu vào. Chính thức, khi kèo bóng đá cúp c2 lớp vận hànhEqualImage
chức kèo bóng đá cúp c2 trả vềTRUE
, an toàn khi cho rằngdatum_image_eq ()
C chức kèo bóng đá cúp c2 sẽ luôn đồng ý với lớp vận hànhđặt hàng
Hàm (với điều kiện là cùng kèo bóng đá cúp c2 đối chiếu OID được truyền cho cảEqualImage
vàđặt hàng
chức kèo bóng đá cúp c2).
Mã cốt lõi về cơ bản không thể suy ra bất cứ điều gì vềHồiBình đẳng ngụ ý bình đẳng hình ảnhTrạng thái của một lớp toán tử trong một họ nhiều loại dữ liệu dựa trên kèo bóng đá cúp c2 chi tiết từ kèo bóng đá cúp c2 lớp toán tử khác trong cùng một gia đình. Ngoài ra, không hợp lý cho một gia đình vận hành để đăng ký loại chéoEqualImage
Hàm và cố gắng làm như vậy sẽ dẫn đến kèo bóng đá cúp c2 lỗi. Điều này là bởi vìVangBình đẳng ngụ ý bình đẳng hình ảnhTrạng thái không chỉ phụ thuộc vào ngữ nghĩa sắp xếp/bình đẳng, ít nhiều được xác định ở cấp độ gia đình của nhà điều hành. Nói chung, ngữ nghĩa mà một loại dữ kèo bóng đá cúp c2 cụ thể phải được xem xét riêng.
Công ước theo sau là kèo bóng đá cúp c2 lớp toán tử đi kèm với lõiPostgreSQLPhân phối là đăng ký kèo bóng đá cúp c2 cổ phiếu, chungEqualImage
Hàm. Hầu hết kèo bóng đá cúp c2 lớp vận hành đăng kýbtequalimage ()
, chỉ ra rằng sự sao chép là an toàn vô điều kiện. kèo bóng đá cúp c2 lớp toán tử cho kèo bóng đá cúp c2 loại dữ liệu có thể lấy được nhưText
Đăng kýbtvarsTrequalImage ()
, chỉ ra rằng sự trùng lặp là an toàn với các đối chiếu xác định. Thực tiễn tốt nhất cho các tiện ích mở rộng của bên thứ ba là đăng ký chức kèo bóng đá cúp c2 tùy chỉnh của riêng họ để giữ quyền kiểm soát.
Tùy chọn
Tùy chọn, kèo bóng đá cúp c2 gia đình vận hành B-cây có thể cung cấpTùy chọn
(Tùy chọn cụ thể của lớp vận hànhHàng) Các chức kèo bóng đá cúp c2 hỗ trợ, đã đăng ký theo hàm hỗ trợ số 5. Các chức kèo bóng đá cúp c2 này xác định một tập hợp các tham số có thể nhìn thấy
ANTùy chọn
Hỗ trợ phải có chữ ký
Tùy chọn (Relopts
local_relopts *
) trả về void
Hàm được chuyển kèo bóng đá cúp c2 con trỏ đến Alocal_relopts
Struct, cần được lấp đầy bằng một tập hợp các tùy chọn cụ thể của lớp vận hành. Các tùy chọn có thể được truy cập từ các chức kèo bóng đá cúp c2 hỗ trợ khác bằng cách sử dụngPG_HAS_OPCLASS_OPTES ()
vàPG_GET_OPCLASS_OPTES ()
Macros.
Hiện tại, không có lớp vận hành B-cây nào cóTùy chọn
Hỗ trợ chức kèo bóng đá cúp c2. B-Tree không cho phép biểu diễn linh hoạt của các khóa như Gist, Sp-Gist, Gin và Brin làm.Tùy chọn
Có lẽ không có nhiều ứng dụng trong phương thức truy cập chỉ mục B-cây hiện tại. Tuy nhiên, chức kèo bóng đá cúp c2 hỗ trợ này đã được thêm vào cây B để đồng nhất và có thể sẽ tìm thấy việc sử dụng trong quá trình tiến hóa hơn nữa của B-cây trongPostgreSQL.
Nếu bạn thấy bất cứ điều gì trong tài kèo bóng đá cúp c2 không chính xác, không khớpMẫu nàyĐể báo cáo vấn đề tài kèo bóng đá cúp c2.