Postgresql 9.3.25 Tài liệu | ||||
---|---|---|---|---|
prev | UP | Chương 57. Gin Chỉ kèo bóng đá hom nay | Tiếp theo |
TheGinGiao diện có cao mức độ trừu tượng, chỉ yêu cầu người thực hiện phương thức truy cập Để thực hiện ngữ nghĩa của loại dữ liệu đang được truy cập. The8900_8905Lớp tự chăm sóc Đồng thời, ghi nhật ký và tìm kiếm cấu trúc cây.
Tất cả những gì cần thiết để có được kèo bóng đá hom nayGinPhương thức truy cập làm việc là để thực hiện bốn (hoặc năm) người dùng do người dùng xác định các phương pháp, xác định hành vi của các khóa trong cây và Mối quan hệ giữa các khóa, các kèo bóng đá hom nay được lập chỉ kèo bóng đá hom nay và truy vấn có thể lập chỉ kèo bóng đá hom nay. Tóm lại,GinKết hợp kèo bóng đá hom nay với tính tổng quát, tái sử dụng mã và giao diện.
Bốn phương thức mà lớp toán tử choGinPhải cung cấp là:
int so sánh (Datum A, Datum
b)
So sánh hai khóa (không được lập chỉ mục!) Và trả về một số nguyên nhỏ hơn 0, 0 hoặc lớn hơn 0, cho biết liệu Khóa đầu tiên nhỏ hơn, bằng hoặc lớn hơn thứ hai. Vô giá trị Các khóa không bao giờ được truyền cho chức kèo bóng đá hom nay này.
9878_9948
Trả về một mảng palloc'd gồm các khóa được cung cấp một kèo bóng đá hom nay được lập chỉ kèo bóng đá hom nay. Số lượng khóa trả về phải được lưu trữ thành*NKEYS. Nếu bất kỳ phím nào có thể là null, cũng kèo bóng đá hom nay mảng*NKEYS boolTrường, lưu trữ địa chỉ của nó tại*nullflags, và đặt các cờ null này khi cần.*nullflagscó thể để lạinull(giá trị ban đầu của nó) nếu tất cả các khóa không phải là null. Giá trị trả về có thể lànullNếu mặt hàng không chứa khóa.
Datum *ExtractQuery (truy vấn mốc, int32
*NKEYS, StrategyNumber n, bool ** pmatch, con trỏ ** thêm_data, bool
** nullflags, int32 *searchMode)
Trả về kèo bóng đá hom nay mảng palloc'd gồm các khóa được cung cấp kèo bóng đá hom nay giá trị được truy vấn;
đó là,Truy vấnlà giá trị trên
Phía bên phải của một toán tử có thể lập chỉ kèo bóng đá hom nay có bên tay trái là
cột được lập chỉ kèo bóng đá hom nay.n10966_11039Phần 35.14.2). Thường,Trích xuất
Sẽ cần tham khảo ý kiếnnĐể xác định loại dữ liệu củaTruy vấnVà phương pháp nên sử dụng để trích xuất khóa
giá trị. Số lượng khóa trả về phải được lưu trữ thành*NKEYS. Nếu bất kỳ phím nào có thể là null, cũng
kèo bóng đá hom nay mảng*NKEYS boolTrường, lưu trữ địa chỉ của nó tại*nullflags, và đặt các cờ null này khi cần.*nullflagsCó thể để lạinull(giá trị ban đầu của nó) nếu tất cả các khóa không phải là null.
Giá trị trả về có thể lànullNếuTruy vấnKhông chứa khóa.
SearchModelà kèo bóng đá hom nay đối số đầu ra mà
cho phépTrích xuất
Để chỉ định
Chi tiết về cách tìm kiếm sẽ được thực hiện. Nếu như*SearchModeđược đặt thànhGin_Search_Mode_Default(đó là giá trị của nó
khởi tạo trước khi gọi), chỉ các kèo bóng đá hom nay phù hợp với ít nhất một trong số
Các khóa trả lại được coi là trận đấu ứng cử viên. Nếu như*SearchModeđược đặt thànhGIN_SEARCH_MODE_INCLUDE_EMPTY, sau đó ngoài
các kèo bóng đá hom nay chứa ít nhất một phím phù hợp, các kèo bóng đá hom nay không chứa
Khóa ở tất cả được coi là trận đấu ứng cử viên. (Chế độ này hữu ích
Ví dụ, để triển khai các toán tử là người điều khiển.) Nếu12605_12618được đặt thànhGIN_SEARCH_MODE_ALL12677_13139access/gin.h.
pmatchlà đối số đầu ra để sử dụng
Khi kết hợp kèo bóng đá hom nay phần được hỗ trợ. Để sử dụng nó,Trích xuất
13334_13363*NKEYSBooleans và lưu trữ địa chỉ của nó tại*pmatch. Mỗi phần tử của mảng phải được đặt thành
Đúng nếu khóa tương ứng yêu cầu khớp kèo bóng đá hom nay phần, sai nếu không.
Nếu như*pmatchđược đặt thànhnullSau đó, Gin giả định rằng không cần kết hợp kèo bóng đá hom nay phần.
Biến được khởi tạo thànhnullTrước
Gọi, vì vậy đối số này có thể đơn giản bị bỏ qua bởi các lớp toán tử
không hỗ trợ kết hợp kèo bóng đá hom nay phần.
Extra_Datalà kèo bóng đá hom nay đối số đầu ra mà
cho phépTrích xuất
Để vượt qua
Dữ liệu bổ sung chonhất quán
vàso sánhspartial
Phương pháp. Để sử dụng nó,Trích xuất
Phải phân bổ kèo bóng đá hom nay mảng
của*NKEYSCon trỏ và lưu trữ địa chỉ của nó
Tại*Extra_data, sau đó lưu trữ bất cứ thứ gì
muốn vào các gợi ý cá nhân. Biến được khởi tạo
ĐẾNnullTrước khi gọi, vì vậy đối số này có thể
chỉ cần bị bỏ qua bởi các lớp toán tử không yêu cầu thêm
dữ liệu. Nếu như*Extra_datađược đặt, toàn bộ
mảng được chuyển chonhất quán
Phương thức và phần tử thích hợp choSo sánhpartial
Phương pháp.
Bool nhất quán (kiểm tra bool [],
StrategyNumber n, truy vấn dữ liệu, Int32 Nkeys, Con trỏ thêm_data [],
Bool *Recheck, Datum Querykeys [], Bool Nullflags [])
Trả về đúng nếu một kèo bóng đá hom nay được lập chỉ kèo bóng đá hom nay thỏa mãn toán tử truy vấn
với số chiến lượcn(hoặc có thể thỏa mãn
nó, nếu chỉ báo kiểm tra lại được trả về). Chức kèo bóng đá hom nay này không
có quyền truy cập trực tiếp vào giá trị của mục được lập chỉ mục, vìGinKhông lưu trữ các kèo bóng đá hom nay
rõ ràng. Đúng hơn, những gì có sẵn là kiến thức về khóa nào
Các giá trị được trích xuất từ truy vấn xuất hiện trong một kèo bóng đá hom nay được lập chỉ kèo bóng đá hom nay nhất định. TheKiểm tramảng có độ dàiNKEYS, giống như số lượng khóa
được trả về trước đó bởiTrích xuất
cho điều nàyTruy vấnDatum. Mỗi yếu tố củaKiểm traMảng là đúng nếu kèo bóng đá hom nay được lập chỉ kèo bóng đá hom nay
chứa khóa truy vấn tương ứng, tức là, nếu (kiểm tra [i] == true)
phím i-th củaTrích xuất
Kết quả
Mảng có mặt trong kèo bóng đá hom nay được lập chỉ kèo bóng đá hom nay. Bản gốcTruy vấnDatum được truyền trong trường hợpnhất quán
Phương pháp cần tham khảo nó, và cũng vậy
TheQuerykeys []vànullflags []mảng được trả về trước đóTrích xuất
. Extra_Datalà mảng dữ liệu thêm được trả về bởiTrích xuất
hoặcnullNếu không.
KhiTrích xuất
Trả về kèo bóng đá hom nay null
khóa trongQuerykeys [], tương ứngKiểm tra []Phần tử là đúng nếu được lập chỉ kèo bóng đá hom nay
kèo bóng đá hom nay chứa một khóa null; đó là ngữ nghĩa củaKiểm tra []giống nhưkhông khác biệt
TỪ. The16719_16731
Hàm
có thể kiểm tra tương ứngnullflags []Phần tử nếu nó cần cho biết sự khác biệt giữa kèo bóng đá hom nay giá trị thông thường
khớp và kèo bóng đá hom nay trận đấu null.
Khi thành công,*Rechecknên được đặt thành Đúng nếu tuple heap cần được kiểm tra lại đối với truy vấn toán tử, hoặc sai nếu kiểm tra chỉ kèo bóng đá hom nay là chính xác. Đó là, một sai lầm Giá trị trả về đảm bảo rằng bộ tple heap không khớp với truy vấn; Giá trị trả về thực sự với*RecheckĐặt thành sự bảo đảm sai rằng Tuple Heap không khớp với truy vấn; và giá trị trả về thực sự với*RecheckĐặt thực sự có nghĩa là Tuple heap có thể khớp với truy vấn, vì vậy nó cần được tìm nạp và kiểm tra lại bằng cách đánh giá toán tử truy vấn trực tiếp so với kèo bóng đá hom nay được lập chỉ kèo bóng đá hom nay ban đầu.
Tùy chọn, kèo bóng đá hom nay lớp toán tử choGinCó thể cung cấp phương pháp thứ năm:
int so sánhspartial (datum partial_key,
Khóa mốc, StrategyNumber n, con trỏ thêm_data)
So sánh khóa truy vấn khớp một phần với khóa chỉ kèo bóng đá hom nay. Trả lại một
Số nguyên có dấu hiệu cho biết kết quả: ít hơn 0 có nghĩa là
khóa chỉ kèo bóng đá hom nay không khớp với truy vấn, nhưng việc quét chỉ kèo bóng đá hom nay nên
Tiếp tục; Không có nghĩa là khóa chỉ kèo bóng đá hom nay phù hợp với truy vấn;
lớn hơn 0 chỉ ra rằng việc quét chỉ kèo bóng đá hom nay sẽ dừng lại vì
Không có nhiều trận đấu là có thể. Số chiến lượcn18233_18378Extra_DataIS
Phần tử tương ứng của mảng dữ liệu thêm được thực hiện bởiTrích xuất
hoặcnullNếu không có. Các phím null không bao giờ được truyền cho điều này
chức kèo bóng đá hom nay.
để hỗ trợ"Kết hợp kèo bóng đá hom nay phần"Truy vấn,
kèo bóng đá hom nay lớp toán tử phải cung cấpSo sánhpartial
Phương pháp và nóTrích xuất
Phương thức phải đặtpmatchtham số khi truy vấn kèo bóng đá hom nay phần phù hợp
gặp phải. Nhìn thấyPhần 57.3.2cho
chi tiết.
Các loại dữ liệu thực tế của các loại khác nhauDatumCác giá trị được đề cập ở trên thay đổi tùy thuộc vào
lớp vận hành. Các giá trị kèo bóng đá hom nay được truyền đếnExtractValue
luôn là của lớp vận hành
loại đầu vào và tất cả các giá trị chính phải là của lớplưu trữLoại. Loại củaTruy vấnĐối số được chuyển choTrích xuất
vànhất quán
là bất cứ điều gì được chỉ định là
Loại đầu vào bên phải của toán tử thành viên lớp được xác định bởi
số chiến lược. Điều này không cần phải giống như loại vật phẩm, vì vậy
miễn là các giá trị khóa của loại đúng có thể được trích xuất từ
Nó.