Phiên bản được hỗ trợ:hiện tại(17)16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ: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
Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

61.2. Chức năng phương thức truy cập chỉ kèo bóng đá hom nay

Các chức năng xây dựng và bảo trì chỉ kèo bóng đá hom nay mà phương thức truy cập chỉ kèo bóng đá hom nay phải cung cấp trongindexAmRoutinelà:

IndexBuildResult *

Xây dựng một chỉ kèo bóng đá hom nay mới. Mối quan hệ chỉ số đã được tạo ra về mặt vật lý, nhưng trống rỗng.AmbuildHàm sẽ gọiIndexBuildHeapScan ()Để quét bảng cho các bộ dữ liệu hiện có và tính toán các khóa cần được chèn vào chỉ kèo bóng đá hom nay. Hàm phải trả về một cấu trúc palloc'd chứa số liệu thống kê về chỉ kèo bóng đá hom nay mới.

Void

Xây dựng một chỉ kèo bóng đá hom nay trống và viết nó vào ngã ba khởi tạo (init_forknum) của mối quan hệ đã cho. Phương pháp này chỉ được gọi là cho các chỉ kèo bóng đá hom nay không được tính đến;

Bool

Chèn một tuple mới vào một chỉ kèo bóng đá hom nay hiện có. TheGiá trịisnullMảng đưa ra các giá trị khóa được lập chỉ kèo bóng đá hom nay vàHEAP_TIDlà tid được lập chỉ kèo bóng đá hom nay. Nếu phương thức truy cập hỗ trợ các chỉ kèo bóng đá hom nay duy nhất (Amcanuniquecờ là đúng) sau đóCheckuniqueCho biết loại kiểm tra tính duy nhất để thực hiện. Điều này thay đổi tùy thuộc vào việc ràng buộc duy nhất có thể bị trì hoãn hay không;Phần 61.5Để biết chi tiết. Thông thường kèo bóng đá hom nay chỉ cầnnặngtham số khi thực hiện kiểm tra tính duy nhất (kể từ đó nó sẽ phải nhìn vào đống

Giá trị kết quả boolean của hàm chỉ có ý nghĩa khiCheckuniqueđộc đáo_check_partial. Trong trường hợp này, một kết quả thực sự có nghĩa là kèo bóng đá hom nay mới được biết đến duy nhất, trong khi sai có nghĩa là nó có thể không phải là duy nhất (và kiểm tra tính duy nhất trì hoãn phải được lên lịch).

Một số chỉ kèo bóng đá hom nay có thể không lập chỉ kèo bóng đá hom nay tất cả các bộ dữ liệu. Nếu tuple không được lập chỉ kèo bóng đá hom nay,AminsertChỉ nên quay lại mà không làm gì cả.

Nếu INDEX AM muốn lưu trữ dữ liệu qua các phần chèn chỉ kèo bóng đá hom nay liên tiếp trong câu lệnh SQL, nó có thể phân bổ không gian trongIndexInfo- ii_contextvà lưu trữ một con trỏ tới dữ liệu trongIndexInfo- ii_amcache(ban đầu sẽ là null).

IndexBulkDeleteresult *

Xóa Tuple (s) khỏi chỉ kèo bóng đá hom nay. Đây là mộtXóa số lượng lớnHoạt động dự định sẽ được thực hiện bằng cách quét toàn bộ chỉ kèo bóng đá hom nay và kiểm tra từng kèo bóng đá hom nay để xem liệu nó có nên bị xóa không. Thông quaCallbackHàm phải được gọi, theo kiểuCallback (tid, callback_state) trả về bool, Để xác định xem bất kỳ kèo bóng đá hom nay nhập chỉ kèo bóng đá hom nay cụ thể nào, như được xác định bởi TID được tham chiếu của nó, sẽ bị xóa. Phải trả về null hoặc một cấu trúc palloc'd chứa thống kê về tác động của hoạt động xóa.AmvacuumCleanup.

vì giới hạnbảo trì_work_mem, AmbulkdeleteCó thể cần phải được gọi nhiều lần khi nhiều bộ dữ liệu bị xóa. TheSố liệu thống kêĐối số là kết quả của cuộc gọi trước đó cho chỉ kèo bóng đá hom nay này (nó là không cho cuộc gọi đầu tiên trong mộtVACUUMHoạt động). Điều này cho phép AM tích lũy số liệu thống kê trên toàn bộ hoạt động.AmbulkdeleteSẽ sửa đổi và trả về cùng một cấu trúc nếu được thông quaSố liệu thống kêkhông phải là NULL.

IndexBulkDeleteresult *

Dọn dẹp sau mộtNút hútHoạt động (không hoặc nhiều hơnAmbulkdeletecuộc gọi). Điều này không phải làm bất cứ điều gì ngoài việc trả lại số liệu thống kê chỉ kèo bóng đá hom nay, nhưng nó có thể thực hiện dọn dẹp số lượng lớn như đòi lại các trang chỉ kèo bóng đá hom nay trống.Số liệu thống kêlà bất cứ điều gì cuối cùngAmbulkdeletecuộc gọi được trả về hoặc null nếuAmbulkdeletekhông được gọi vì không có bộ dữ liệu nào cần bị xóa. Nếu kết quả không phải là null, nó phải là một cấu trúc palloc'd.pg_ class, và sẽ được báo cáo bởiVACUUMnếuVerboseđược đưa ra. Bạn có thể trả lại NULL nếu chỉ kèo bóng đá hom nay không thay đổi trong thời gianNút hútHoạt động, nhưng nếu không thì các số liệu thống kê chính xác sẽ được trả về.

kể từPostgreSQL8.4,AmvacuumCleanupcũng sẽ được gọi khi hoàn thànhPhân tíchHoạt động. Trong trường hợp nàySố liệu thống kêluôn luôn là null và bất kỳ giá trị trả về nào cũng sẽ bị bỏ qua. Trường hợp này có thể được phân biệt bằng cách kiểm traInfo- Analyze_only. Khuyến cáo rằng kèo bóng đá hom nay không làm gì ngoại trừ việc dọn dẹp hậu quả trong một cuộc gọi như vậy và chỉ trong một quy trình công nhân tự động.

Bool

Kiểm tra xem chỉ kèo bóng đá hom nay có thể hỗ trợQuét chỉ có chỉ kèo bóng đá hom nayTrên cột đã cho, bằng cách trả về giá trị được lập chỉ kèo bóng đá hom nay ban đầu của cột. Số thuộc tính là dựa trên 1, tức là, ATTNO của cột đầu tiên là 1. Trả về đúng nếu được hỗ trợ, khác.Amcanreturntrường trong nóindexAmRoutineCấu trúc có thể được đặt thành NULL.

Void

Ước tính chi phí quét chỉ kèo bóng đá hom nay. Chức năng này được mô tả đầy đủ trongPhần 61.6, bên dưới.

bytea *

Parse và xác nhận mảng tái định cư cho một chỉ kèo bóng đá hom nay. Điều này chỉ được gọi là khi một mảng không liên kết không có null tồn tại cho chỉ kèo bóng đá hom nay.REVOPTIONlà mộtTextMảng chứa các kèo bóng đá hom nay của biểu mẫutên=giá trị. Chức năng sẽ xây dựng mộtbyteaGiá trị, sẽ được sao chép vàord_optionsTrường của kèo bóng đá hom nay nhập Relcache của chỉ kèo bóng đá hom nay. Nội dung dữ liệu củabyteaGiá trị được mở cho kèo bóng đá hom nay để xác định; Hầu hết các kèo bóng đá hom nay tiêu chuẩn đều sử dụng structstdrdoptions. Khixác thựclà đúng, hàm sẽ báo cáo thông báo lỗi phù hợp nếu bất kỳ tùy chọn nào không được nhận ra hoặc có các giá trị không hợp lệ; khixác thựclà sai, các kèo bóng đá hom nay không hợp lệ nên được bỏ qua âm thầm. (xác thựclà sai khi tải các tùy chọn đã được lưu trữ trongpg_catalog; Một kèo bóng đá hom nay nhập không hợp lệ chỉ có thể được tìm thấy nếu phương thức truy cập đã thay đổi các quy tắc của nó cho các tùy chọn và trong trường hợp đó bỏ qua các kèo bóng đá hom nay nhập lỗi là phù hợp.) Bạn có thể trả lại NULL nếu muốn có hành vi mặc định.

Bool

TheAmpropertyPhương thức cho phép các phương thức truy cập chỉ kèo bóng đá hom nay để ghi đè hành vi mặc định củaPG_INDEX_COLUMN_HAS_PROPERTYvà các chức năng liên quan. Nếu phương thức truy cập không có bất kỳ hành vi đặc biệt nào cho các yêu cầu thuộc tính chỉ kèo bóng đá hom nay,Ampropertytrường trong nóindexAmRoutineCấu trúc có thể được đặt thành NULL. Nếu không,Ampropertykèo bóng đá hom nay sẽ được gọi bằngindex_oidAttnoCả hai không choPG_INDEXAM_HAS_PROPERTYcuộc gọi hoặc vớiindex_oidhợp lệ vàAttnosố không choPG_INDEX_HAS_PROPERTYcuộc gọi hoặc vớiindex_oidhợp lệ vàAttnolớn hơn 0 chopg_index_column_has_propertycuộc gọi.proplà giá trị enum xác định thuộc tính đang được kiểm tra, trong khipropnamelà chuỗi tên thuộc tính gốc. Nếu mã lõi không nhận ra tên thuộc tính thìpropAMPROP_UNKNOWN. Các kèo bóng đá hom nay có thể xác định tên thuộc tính tùy chỉnh bằng cách kiểm trapropnamecho một trận đấu (sử dụngPG_STRCASECMPĐể phù hợp, để phù hợp với mã lõi); Đối với các tên được biết đến với mã lõi, tốt hơn là kiểm traprop. NếuAmpropertykèo bóng đá hom nay trả vềTRUESau đó, nó đã xác định kết quả kiểm tra thuộc tính: Nó phải đặt*resvới giá trị boolean để trả về hoặc đặt*isnullđếnTRUEĐể trả lại một null. (Cả hai biến được tham chiếu đều được khởi tạo thànhSaiTrước cuộc gọi.) NếuAmpropertykèo bóng đá hom nay trả vềSaiSau đó, mã cốt lõi sẽ tiến hành logic bình thường để xác định kết quả kiểm tra thuộc tính.

Các kèo bóng đá hom nay hỗ trợ các toán tử đặt hàng nên thực hiệnAMPROP_DISTANCE_ORDERABLEKiểm tra thuộc tính, vì mã cốt lõi không biết cách làm điều đó và sẽ trả về NULL. Nó cũng có thể là lợi thế để thực hiệnAMProp_ReturnableKiểm tra, nếu điều đó có thể được thực hiện với giá rẻ hơn bằng cách mở chỉ kèo bóng đá hom nay và gọiAmcanreturn, đó là hành vi mặc định của mã cốt lõi. Hành vi mặc định phải thỏa đáng cho tất cả các thuộc tính tiêu chuẩn khác.

Bool

Xác thực các kèo bóng đá hom nay nhập danh kèo bóng đá hom nay cho lớp toán tử được chỉ định, cho đến khi phương thức truy cập có thể làm điều đó một cách hợp lý. Ví dụ, điều này có thể bao gồm kiểm tra rằng tất cả các chức năng hỗ trợ cần thiết được cung cấp.amvalidateHàm phải trả về sai nếu OPClass không hợp lệ. Các vấn đề nên được báo cáo vớiEREPORTTin nhắn.

kèo bóng đá hom nay đích của một chỉ kèo bóng đá hom nay, tất nhiên, là để hỗ trợ quét cho các bộ dữ liệu phù hợp với một chỉ kèo bóng đá hom nayWHEREĐiều kiện, thường được gọi làvòng loạihoặcKhóa quét. Các ngữ nghĩa của quét chỉ kèo bóng đá hom nay được mô tả đầy đủ hơn trongPhần 61.3, bên dưới. Phương thức truy cập chỉ kèo bóng đá hom nay có thể hỗ trợtrơnSCAN INDEX,bitmapQuét chỉ kèo bóng đá hom nay hoặc cả hai. Các chức năng liên quan đến quét mà phương thức truy cập chỉ kèo bóng đá hom nay phải hoặc có thể cung cấp là:

IndexScandesc

Chuẩn bị cho quét chỉ kèo bóng đá hom nay. TheNKEYSNorderbystham số cho biết số lượng các trình điều khiển và toán tử đặt hàng sẽ được sử dụng trong quét; Đây có thể hữu ích cho kèo bóng đá hom nay đích phân bổ không gian.phảiTạo cấu trúc này bằng cách gọiMối quan hệ IndexScan (). Trong hầu hết các trường hợpAmbeginscankhông ngoài việc thực hiện cuộc gọi đó và có thể có được ổ khóa; Các phần thú vị của khởi động quét chỉ kèo bóng đá hom nay là trongAmrescan.

Void

Bắt đầu hoặc khởi động lại quét chỉ kèo bóng đá hom nay, có thể có các khóa quét mới. (Để khởi động lại bằng các phím được thông qua trước đó, NULL được truyền choKeysvà/hoặcOrderBys..Ambeginscan. Trong thực tế, tính năng khởi động lại được sử dụng khi một tuple bên ngoài mới được chọn bởi một vòng lặp lồng nhau và do đó cần có giá trị so sánh khóa mới, nhưng cấu trúc khóa quét vẫn giữ nguyên.

Bool

Lấy phần tiếp theo trong lần quét đã cho, di chuyển theo hướng đã cho (tiến hoặc lùi trong chỉ kèo bóng đá hom nay). Trả về đúng nếu có được một tuple, sai nếu không còn các bộ dữ liệu phù hợp.quétCấu trúc. Lưu ý rằngThành côngHồichỉ có nghĩa là chỉ kèo bóng đá hom nay chứa một kèo bóng đá hom nay nhập phù hợp với các khóa quét, chứ không phải tuple nhất thiết vẫn tồn tại trong đống hoặc sẽ vượt qua bài kiểm tra ảnh chụp nhanh của người gọi. Về thành công,Amgettuplecũng phải đặtSCAN- XS_RECHECKĐúng hoặc sai. Sai có nghĩa là chắc chắn rằng kèo bóng đá hom nay nhập chỉ kèo bóng đá hom nay phù hợp với các khóa quét.MấtHàngCác toán tử chỉ kèo bóng đá hom nay. Lưu ý rằng việc kiểm tra lại sẽ chỉ mở rộng đến các điều kiện quét;Amgettuplengười gọi.

Nếu chỉ kèo bóng đá hom nay hỗ trợPostgresql: Tài liệu: 11: 11.9. Quét(tức là,AmcanreturnTrả về đúng cho bất kỳ cột nào của nó), sau đó thành công, AM cũng phải kiểm traSCAN- XS_WANT_ITUPvà nếu đó là sự thật, nó phải trả về dữ liệu được lập chỉ kèo bóng đá hom nay ban đầu cho kèo bóng đá hom nay nhập chỉ kèo bóng đá hom nay. Các cột màAmcanreturnTrả về sai có thể được trả về dưới dạng nulls. Dữ liệu có thể được trả về dưới dạngIndextupleCon trỏ được lưu trữ tạiSCAN- XS_ITUP, với mô tả tupleSCAN- XS_ITUPDESC; hoặc dưới dạng ACon trỏ được lưu trữ tạiSCAN- XS_HITUP, với mô tả tupleSCAN- XS_HITUPDESC. (Nên sử dụng định dạng sau khi tái cấu trúc dữ liệu có thể không phù hợp vớiIndextuple.) Trong cả hai trường hợp, quản lý dữ liệu được tham chiếu bởi con trỏ là trách nhiệm của kèo bóng đá hom nay. Dữ liệu phải vẫn tốt ít nhất là cho đến khi tiếp theoAmgettuple, AmrescanhoặcAmendscanGọi cho quét.

TheAmgettupleChức năng chỉ cần được cung cấp nếu kèo bóng đá hom nay hỗ trợMạnhtrơnHồiQuét chỉ kèo bóng đá hom nay. Nếu nó không,Amgettupletrường trong nóindexAmRoutineCấu trúc phải được đặt thành NULL.

Int64

Lấy tất cả các bộ dữ liệu trong lần quét đã cho và thêm chúng vào người gọi được cung cấpTIDBITMAP(nghĩa là hoặc tập hợp ID Tuple thành bất kỳ tập hợp nào đã có trong bitmap). Số lượng các bộ dữ liệu được lấy lại được trả về (đây có thể chỉ là một số lượng gần đúng, ví dụ, một số AMS không phát hiện các bản sao).AmgetbitmapCó thể chỉ ra rằng việc kiểm tra các điều kiện quét là cần thiết cho ID tuple cụ thể. Điều này tương tự nhưxs_rechecktham số đầu ra củaAmgettuple. Lưu ý: Trong quá trình triển khai hiện tại, hỗ trợ cho tính năng này được kết hợp với sự hỗ trợ cho việc lưu trữ lỗ của chính bitmap và do đó người gọi kiểm tra cả hai điều kiện quét và vị từ chỉ số một phần (nếu có) cho các bộ kiểm tra có thể kiểm tra lại.AmgetbitmapAmgettupleKhông thể được sử dụng trong cùng một chỉ số quét; Cũng có những hạn chế khác khi sử dụngAmgetbitmap, như được giải thích trongPhần 61.3.

TheAmgetbitmapChức năng chỉ cần được cung cấp nếu kèo bóng đá hom nay hỗ trợBitmapQuét chỉ kèo bóng đá hom nay. Nếu nó không,Amgetbitmaptrường trong nóindexAmRoutinestruct phải được đặt thành NULL.

VOID

Kết thúc tài nguyên quét và phát hành. TheSCANBản thân cấu trúc không nên được giải phóng, nhưng bất kỳ khóa hoặc chân nào được thực hiện bên trong bằng kèo bóng đá hom nay phải được phát hành, cũng như bất kỳ bộ nhớ nào khác được phân bổ bởiAmbeginscanvà các chức năng liên quan đến quét khác.

Void

Đánh dấu vị trí quét hiện tại. kèo bóng đá hom nay chỉ cần hỗ trợ một vị trí quét được ghi nhớ trên mỗi lần quét.

TheAmmarkposChức năng chỉ cần được cung cấp nếu kèo bóng đá hom nay hỗ trợ quét theo thứ tự. Nếu nó không,Ammarkpostrường trong nóindexAmRoutineCấu trúc có thể được đặt thành NULL.

Void

Khôi phục quét về vị trí được đánh dấu gần đây nhất.

TheAmrestrposChức năng chỉ cần được cung cấp nếu kèo bóng đá hom nay hỗ trợ quét theo thứ tự. Nếu nó không,Amrestrpostrường trong nóindexAmRoutinestruct có thể được đặt thành NULL.

Ngoài việc hỗ trợ quét chỉ kèo bóng đá hom nay thông thường, một số loại chỉ kèo bóng đá hom nay có thể muốn hỗ trợQuét chỉ kèo bóng đá hom nay song song, cho phép nhiều phụ trợ hợp tác trong việc thực hiện quét chỉ kèo bóng đá hom nay. Phương pháp truy cập chỉ kèo bóng đá hom nay phải sắp xếp mọi thứ để mỗi quá trình hợp tác trả về một tập hợp con của các bộ dữ liệu được thực hiện bằng cách quét chỉ số không song song thông thường, nhưng theo cách mà sự kết hợp của các tập hợp con đó bằng với tập hợp các bộ dữ liệu sẽ được trả lại bằng cách quét chỉ số không song song thông thường.

Kích thước

Ước tính và trả về số byte của bộ nhớ chia sẻ động mà kèo bóng đá hom nay sẽ cần thiết để thực hiện quét song song. .song song Indexscandescdata.)

Không cần thiết phải thực hiện chức năng này cho các kèo bóng đá hom nay không hỗ trợ quét song song hoặc số lượng byte bổ sung cần thiết là bằng không.

Void

Hàm này sẽ được gọi để khởi tạo bộ nhớ chia sẻ động khi bắt đầu quét song song.TargetSẽ chỉ vào ít nhất số byte đã được trả về trước đóAmestimateParallelScanvà chức năng này có thể sử dụng lượng không gian đó để lưu trữ bất kỳ dữ liệu nào mà nó muốn.

Không cần thiết phải thực hiện chức năng này cho các kèo bóng đá hom nay không hỗ trợ quét song song hoặc trong trường hợp không gian bộ nhớ được chia sẻ cần thiết không cần khởi tạo.

VOID

Hàm này, nếu được thực hiện, sẽ được gọi khi quét chỉ kèo bóng đá hom nay song song phải được khởi động lại. Nó sẽ đặt lại bất kỳ trạng thái chia sẻ nào được thiết lập bởiAminitparallelscansao cho việc quét sẽ được khởi động lại từ đầu.