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

67.3. kèo bóng đá pháp#

như trongBảng 38.96947_7049

đặ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 đá pháp hỗ trợ so sánh, được đăng ký trongpg_amprocvới chức kèo bóng đá pháp hỗ trợ số 1 vàAmprocleftType/AmprocrightTypebằng các loại dữ kèo bóng đá pháp bên trái và bên phải để so sánh (nghĩa là, các loại dữ kèo bóng đá pháp tương tự mà các 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 nullABvà trả lạiINT32Giá trị đó< 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ác giá trị của kiểu dữ kèo bóng đá pháp phải được so sánh. Nhìn thấysrc/backend/access/nbtree/nbtcompare.ccho các ví dụ.

8661_8817pg_get_collation ()cơ chế.

Sortsupport

Tùy chọn, kèo bóng đá pháp 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 đá pháp 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/elils/sortsupport.h.

in_range

Tùy chọn, kèo bóng đá pháp 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ác 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ác điều khoản cửa sổ chứaphạm vi Offset trướcphạm vi Offset sauCác 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 đá phápOffsetGiá trị theo cách tương thích với thứ tự dữ kèo bóng đá pháp 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à kèo bóng đá pháp trong những loại được hỗ trợ bởi họ nhà điều hành (nghĩa là, kèo bóng đá pháp loại mà nó cung cấp kèo bóng đá pháp đơn đặt hàng). Tuy nhiên,Offsetcó thể thuộc kèo bóng đá pháp loại khác, có thể là kèo bóng đá pháp loại không được gia đình không hỗ trợ. kèo bóng đá pháp ví dụ là tích hợpTime_ops11462_11484in_rangeHàm cóOffsetthuộc loạiKhoảng. kèo bóng đá pháp gia đình có thể cung cấpin_rangeHàm cho bất kỳ loại được hỗ trợ nào và kèo bóng đá pháp hoặc nhiềuOffsetLoại. Mỗiin_rangeHàm nên được nhập vàopg_amprocvớiAmprocleftTypebằngType1AmprocrightTypebằngType2.

ngữ nghĩa thiết yếu của kèo bóng đá phápin_rangeHàm phụ thuộc vào hai tham số cờ Boolean. Nó sẽ thêm hoặc trừcơ sởOffset, sau đó so sánhValđế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ếusub14008_14019Val <=(cơ sở - Offset)

14291_14348Offset: 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ổKhăn. .in_rangeHàm để mã lõi không cần hiểu những gìÍt hơn 0Hồicó nghĩa là cho một loại dữ kèo bóng đá pháp cụ thể.

kèo bóng đá pháp kỳ vọng bổ sung làin_rangeCác chức kèo bóng đá pháp 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ữ kèo bóng đá pháp. Lưu ý rằng nếu kiểu dữ kèo bóng đá pháp bao gồm các khái niệm nhưVô cựchoặcHồiNAN, có thể cần chăm sóc thêm để đảm bảo rằngin_rangekết quả của họ đồng ý với thứ tự sắp xếp bình 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ới16460_16466= Đúng là đúng đối với kèo bóng đá pháp sốVal1cơ sở, nó phải đúng với mọiVal2 <= Val116754_16771cơ sở.

  • nếuin_rangevới= Đúng là sai đối với kèo bóng đá pháp sốVal1cơ sở, nó phải sai cho mỗiVal2 = Val1với cùng kèo bóng đá phápcơ sở.

  • nếuin_rangevới= Đúng là đúng đối với kèo bóng đá pháp sốValBase1, nó phải đúng với mọibase2 = Base1với cùng kèo bóng đá phápVal.

  • nếuin_rangevới= true là sai đối với kèo bóng đá pháp sốValBase1, nó phải sai cho mỗibase2 <= Base1với cùng kèo bóng đá phápVal.

18408_18466ít= false.

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 kèo bóng đá pháp 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 đá pháp họ vận hành Btree có thể cung cấpEqualImage(Bình đẳng ngụ ý bình đẳng hình ảnhHồi) Các chức kèo bóng đá pháp hỗ trợ, được đăng ký theo chức kèo bóng đá pháp hỗ trợ số 4. Các chức kèo bóng đá pháp 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 kèo bóng đá pháp 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ề020000_20004HồiĐối số bằng nhauxông) Khi nóABĐố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ýEqualImagechức kèo bóng đá pháp 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ữ kèo bóng đá pháp 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ác lớp toán tử. Nếu nhưOpcIntypelà loại dữ kèo bóng đá pháp 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ềTRUE21144_21239EqualImagechức kèo bóng đá pháp). 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 khimỗiCộ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ữ kèo bóng đá pháp varlena, biểu diễn trên đĩa của hai hình ảnh bằng các mốc dữ kèo bóng đá pháp 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 kèo bóng đá pháp lớp vận hànhEqualImagechức kèo bóng đá pháp trả vềTRUE, an toàn khi cho rằngdatum_image_eq ()C chức kèo bóng đá pháp 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 kèo bóng đá pháp đối chiếu OID được truyền cho cảEqualImageđặt hàngchức kèo bóng đá pháp).

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 ảnhHồi22593_22797EqualImageHàm và cố gắng làm như vậy sẽ dẫn đến kèo bóng đá pháp lỗi. Điều này là bởi vìHồiBình đẳng ngụ ý bình đẳng hình ảnhTrạng thái không chỉ phụ thuộc vào ngữ nghĩa phân loại/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 đá pháp cụ thể phải được xem xét riêng.

Công ước theo sau là các lớp toán tử đi kèm với lõiPOSTGRESQLPhân phối là đăng ký kèo bóng đá pháp cổ phiếu, chungEqualImageHàm. Hầu hết các 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ác lớp toán tử cho các loại dữ kèo bóng đá pháp có thể lấy được nhưTextĐăng kýbtvarsTrequalImage (), trong đó 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 đá pháp 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 đá pháp gia đình vận hành B-cây có thể cung cấpTùy chọn(HồiTùy chọn cụ thể của lớp vận hànhxông) Các chức kèo bóng đá pháp hỗ trợ, được đăng ký theo hàm hỗ trợ số 5. ​​Các chức kèo bóng đá pháp 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 kèo bóng đá pháp con trỏ cho kèo bóng đá pháplocal_reloptsstruct, cần được lấp đầy với 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 đá pháp hỗ trợ khác bằng cách sử dụngpg_has_opclass_options ()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ọn25059_25174Tùy chọnCó lẽ không có nhiều ứng dụng trong phương thức truy cập chỉ mục B-Tree hiện tại. Tuy nhiên, chức kèo bóng đá pháp 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.

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 kèo bóng đá pháp 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 kèo bóng đá pháp.