Phiên bản được hỗ trợ:16 / 15 / 14 / 13
Phiên bản không được hỗ trợ:12 / 11

64.3. cách đọc kèo bóng đá

như trongBảng 38.9, Btree xác định một chức cách đọc kèo bóng đá 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 cách đọc kèo bóng đá hỗ trợ so sánh, được đăng ký trongpg_amprocvới chức cách đọc kèo bóng đá hỗ trợ số 1 vàAmprocleftType/AmprocrightTypebằng với cách đọc kèo bóng đá loại dữ liệu bên trái và bên phải để so sánh (nghĩa là, cách đọc kèo bóng đá loại dữ liệu tương tự mà cách đọc kèo bóng đá toán tử phù hợp được đăng ký trong7702_7711). Hàm so sánh phải lấy hai giá trị không nullABvà trả lạiINT32Giá trị đó là< 0, 0hoặc 0khiA < B, A = BhoặcA B, tương ứng. Một kết quả null không được phép: Tất cả cách đọc kèo bóng đá giá trị của kiểu dữ liệu phải được so sánh. Nhìn thấysrc/backend/access/nbtree/nbtcompare.ccho cách đọc kèo bóng đá ví dụ.

8658_8814pg_get_collation ()cơ chế.

Sortsupport

Tùy chọn, một 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 cách đọc kèo bóng đá 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, một 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 cách đọc kèo bóng đá 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ợ cách đọc kèo bóng đá điều khoản cửa sổ chứaphạm vi Offset trướcphạm vi Offset saucách đọc kèo bóng đá 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ừ mộtOffsetGiá trị theo cách tương thích với thứ tự dữ cách đọc kèo bóng đá của gia đình.

ANin_rangeHàm phải có chữ ký

in_range (ValType1,cơ sởType1,OffsetType2,subbool,Bool)
trả về bool

Valcơ sởPhải cùng loại, là một trong những loại được họ hỗ trợ bởi họ nhà điều hành (nghĩa là, một loại mà nó cung cấp một đơn đặt hàng). Tuy nhiên,Offsetcó thể thuộc loại khác, có thể là một loại khác không được gia đình không hỗ trợ. Một ví dụ là tích hợpTime_opsGia đình cung cấpin_rangeHàm cóOffsetthuộc loạiKhoảng. Một gia đình có thể cung cấpin_rangeHàm cho bất kỳ loại được hỗ trợ nào và một hoặc nhiềuOffsetLoại. Mỗi11830_11840Hàm nên được nhập vàopg_amprocvớiAmprocleftTypebằngType1AmprocrightTypebằngType2.

ngữ nghĩa thiết yếu của mộtin_rangeHàm phụ thuộc vào hai tham số cờ Boolean. Nó sẽ thêm hoặc trừcơ sởOffset12368_12385Valđến kết quả, như sau:

  • nếu!sub!, returnVal =(cơ sở + Offset)

  • nếu!sub, returnVal <=(cơ sở + Offset)

  • nếusub!, returnVal =(cơ sở - Offset)

  • nếusub, returnVal <=(cơ sở - Offset)

Trước khi làm như vậy, chức cách đọc kèo bóng đá 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_rangeHàm để mã lõi không cần hiểuÍt hơn 0Hồicó nghĩa là cho một kiểu dữ cách đọc kèo bóng đá cụ thể.

Một kỳ vọng bổ sung làin_rangeCác chức cách đọc kèo bóng đá nên, nếu thực tế, tránh ném lỗi nếucơ sở + Offsethoặccơ sở - OffsetSẽ 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ữ liệu. Lưu ý rằng nếu kiểu dữ liệu bao gồm cách đọc kèo bóng đá khái niệm nhưHồiVô cựcHồihoặcNAN, có thể cần thêm sự chăm sóc để đảm bảo rằngin_rangeS 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_rangeHà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ủaOffsetsub, sau đó:

  • nếuin_rangevới16473_16500Val1cơ sở, nó phải đúng với mọiVal2 <= Val1Với cùng mộtcơ sở.

  • nếuin_rangevới= true là sai đối với một sốVal1cơ sở, nó phải sai cho mỗiVal2 = Val1với cùng mộtcơ sở.

  • nếuin_rangevới= Đúng là đúng đối với một sốValBase1, nó phải đúng với mọibase2 = Base1với cùng mộtVal.

  • nếuin_rangevới= true là sai đối với một sốValBase1, nó phải sai cho mỗibase2 <= Base118279_18296Val.

cách đọc kèo bóng đá câu tương tự với cách đọc kèo bóng đá đ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_rangeHàm, sử dụng cơ chế pg_get_collation () tiêu chuẩn.

in_rangeCác chức cách đọc kèo bóng đá 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, một 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 cách đọc kèo bóng đá hỗ trợ, được đăng ký theo chức cách đọc kèo bóng đá hỗ trợ số 4. Các chức cách đọc kèo bóng đá 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,EqualImageCác chức cách đọc kèo bóng đá chỉ được gọi khi xây dựng hoặc xây dựng lại một chỉ mục.

ANEqualImageHà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ềĐúngchỉ ra rằngđặt hàngHàm cho lớp toán tử được đảm bảo chỉ trả về0(VangĐối số bằng nhauHồi) Khi nóAB20176_20275EqualImagechức cách đọc kèo bóng đá hoặc trả vềSaiCho biết rằng điều kiện này không thể được giả định để giữ.

TheOpcIntypeĐối số làPG_TYPE.oidcủa kiểu dữ cách đọc kèo bóng đá 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ảnEqualImagehàm trên cách đọc kèo bóng đá lớp toán tử. Nếu nhưOpcIntypelà một loại dữ cách đọc kèo bóng đá có kết hợp, đối chiếu thích hợp OID sẽ được chuyển choEqualImageHàm, sử dụng tiêu chuẩnpg_get_collation ()cơ chế.

Theo như lớp toán tử, trả vềTRUE21141_21236EqualImagechức cách đọc kèo bóng đá). 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ýEqualImageHàm và mỗi hàm thực sự trả vềTRUEKhi đượ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 cách đọc kèo bóng đá 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ủaPostgresql: Tàinén trên đầu vào. Chính thức, khi một lớp vận hànhEqualImagechức cách đọc kèo bóng đá trả vềTRUE, an toàn khi cho rằngdatum_image_eq ()C chức cách đọc kèo bóng đá sẽ luôn đồng ý với lớp vận hànhđặt hàngHàm (với điều kiện là cùng một đối chiếu OID được truyền cho cảEqualImageđặt hàngchức cách đọc kèo bóng đá).

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 ảnh22590_22794EqualImageHàm và cố gắng làm như vậy sẽ dẫn đến một lỗi. Điều này là bởi vìVangBình đẳng ngụ ý bình đẳng hình ảnh22995_23215

Công ước theo sau là cách đọc kèo bóng đá lớp toán tử đi kèm với lõiPostgreSQLPhân phối là đăng ký một cổ phiếu, chungEqualImageHàm. Hầu hết cách đọc kèo bóng đá 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. cách đọc kèo bóng đá lớp toán tử cho cách đọc kèo bóng đá 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 cách đọc kèo bóng đá tùy chỉnh của riêng họ để giữ quyền kiểm soát.

Tùy chọn

Tùy chọn, một 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 cách đọc kèo bóng đá hỗ trợ, đã đăng ký theo hàm hỗ trợ số 5. ​​Các chức cách đọc kèo bóng đá này xác định một tập hợp các tham số có thể nhìn thấy

ANTùy chọnHỗ trợ phải có chữ ký

Tùy chọn (Relopts local_relopts *) trả về void

Hàm được chuyển một con trỏ đến Alocal_reloptsStruct, 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 cách đọc kèo bóng đá hỗ trợ khác bằng cách sử dụngPG_HAS_OPCLASS_OPTES ()PG_GET_OPCLASS_OPTES ()Macros.

Hiện tại, không có lớp toán tử B-cây nào cóTùy chọnHỗ trợ chức cách đọc kèo bóng đá. 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. Vì thế,Tùy chọn25206_25429PostgreSQL.

Gửi hiệu chỉnh

Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không khớp Kinh nghiệm của bạn với tính cách đọc kèo bóng đá cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu nàyĐể báo cáo vấn đề tài cách đọc kèo bóng đá.