TheGinGiao diện có mức độ trừu tượng cao, yêu cầu người thực hiện phương thức truy cập chỉ để thực hiện ngữ nghĩa của kiểu dữ liệu được truy cập. TheGinBản thân lớp chăm sóc sự đồ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ó đượcGinPhương thức truy cập làm việc là thực hiện một vài phương pháp do người dùng xác định, 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, tỷ lệ kèo bóng đá 88 được lập chỉ tỷ lệ kèo bóng đá 88 và truy vấn có thể lập chỉ tỷ lệ kèo bóng đá 88. Tóm lại,GinKết hợp độ mở rộng với tính tổng quát, tái sử dụng mã và giao diện sạch.
Có hai phương thức mà tỷ lệ kèo bóng đá 88 lớp toán tử choGinphải cung cấp:
Datum *ExtractValue (Datum ItemValue, Int32 *NKEYS,
Trả về một mảng palloc'd gồm một tỷ lệ kèo bóng đá 88 được cung cấp một tỷ lệ kèo bóng đá 88 được lập chỉ tỷ lệ kèo bóng đá 88. Số lượng khóa trả về phải được lưu trữ thành*NKEYS
9846_9906*NKEYS
bool
Trường, lưu trữ địa chỉ của nó tại*nullflags
, và đặt các cờ null này khi cần.*nullflags
có 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ànull
Nếu tỷ lệ kèo bóng đá 88 không chứa khóa.
10363_10503
Trả về tỷ lệ kèo bóng đá 88 mảng palloc'd gồm các khóa được cung cấp tỷ lệ kèo bóng đá 88 giá trị được truy vấn; đó là,Truy vấn
là giá trị ở phía bên phải của toán tử có thể lập chỉ tỷ lệ kèo bóng đá 88 có phía bên trái là cột được lập chỉ tỷ lệ kèo bóng đá 88.n
là số chiến lược của toán tử trong lớp toán tử (xemPhần 38.16.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ấn
và phương pháp nên sử dụng để trích xuất các giá trị khóa. 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 palloc tỷ lệ kèo bóng đá 88 mảng*NKEYS
bool
Trường, lưu trữ địa chỉ của nó tại*nullflags
, và đặt các cờ null này khi cần.*nullflags
Có thể để lạinull
11598_11671null
NếuTruy vấn
không chứa khóa.
searchMode
là đối số đầu ra 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ị mà nó được khởi tạo trước khi gọi), chỉ các tỷ lệ kèo bóng đá 88 phù hợp với ít nhất một trong các khóa trả về được coi là phù hợp ứng cử viên. Nếu như*SearchMode
được đặt thành12276_12307
, sau đó ngoài các tỷ lệ kèo bóng đá 88 chứa ít nhất một phím phù hợp, các tỷ lệ kèo bóng đá 88 không chứa khóa nào được coi là phù hợp ứng cử viên. (Ví dụ: Chế độ này rất hữu ích để triển khai các toán tử là bộ phận của các toán tử.) Nếu*SearchMode
được đặt thànhGIN_SEARCH_MODE_ALL
, sau đó tất cả các tỷ lệ kèo bóng đá 88 không null trong chỉ tỷ lệ kèo bóng đá 88 được coi là phù hợp ứng cử viên, cho dù chúng có khớp với bất kỳ khóa nào được trả về hay không. .Access/gin.h
.
pmatch
là tỷ lệ kèo bóng đá 88 đối số đầu ra để sử dụng khi hỗ trợ kết hợp tỷ lệ kèo bóng đá 88 phần. Để sử dụng nó,Trích xuất
Phải phân bổ tỷ lệ kèo bóng đá 88 mảng*NKEYS
bool
S 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 true nếu khóa tương ứng yêu cầu khớp tỷ lệ kèo bóng đá 88 phần, sai nếu không. Nếu như*pmatch
được đặt thànhnull
Sau đó, Gin giả định rằng không cần kết hợp tỷ lệ kèo bóng đá 88 phần. Biến được khởi tạo thànhnull
Trước khi gọi, vì vậy đối số này có thể bị bỏ qua bởi các lớp toán tử không hỗ trợ kết hợp tỷ lệ kèo bóng đá 88 phần.
Extra_Data
là đối số đầu ra cho phépTrích xuất
Để truyền dữ liệu bổ sung chonhất quán
vàSo sánhpartial
Phương pháp. Để sử dụng nó,Trích xuất
Phải phân bổ tỷ lệ kèo bóng đá 88 mảng*NKEYS
Con trỏ và lưu trữ địa chỉ của nó tại*Extra_data
, sau đó lưu trữ bất cứ điều gì nó muốn vào các con trỏ riêng lẻ. Biến được khởi tạo thànhnull
Trước khi gọi, vì vậy đối số này có thể 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ánhspartial
Phương pháp.
Một lớp toán tử cũng phải cung cấp một chức tỷ lệ kèo bóng đá 88 để kiểm tra xem một mục được lập chỉ mục có khớp với truy vấn không. Nó có hai hương vị, một booleannhất quán
14981_15008Triconsistent
chức tỷ lệ kèo bóng đá 88.Triconsistent
15103_15153Triconsistent
Một mình là đủ. Tuy nhiên, nếu biến thể Boolean rẻ hơn đáng kể để tính toán, thì có thể thuận lợi để cung cấp cả hai. Nếu chỉ có biến thể Boolean được cung cấp, một số tối ưu hóa phụ thuộc vào các tỷ lệ kèo bóng đá 88 chỉ tỷ lệ kèo bóng đá 88 từ chối trước khi tìm nạp tất cả các khóa bị vô hiệu hóa.
Bool nhất quán (kiểm tra bool [], StrategyNumber N, Datum truy vấn, Int32 NKEYS, Con trỏ thêm_data [], Bool *Recheck, Datum Querykeys [], Bool Nullflags [])
Trả về đúng nếu một tỷ lệ kèo bóng đá 88 được lập chỉ tỷ lệ kèo bóng đá 88 thỏa mãn toán tử truy vấn với số chiến lượcn
15882_16024GinKhông lưu trữ các tỷ lệ kèo bóng đá 88 một cách rõ ràng. Thay vào đó, những gì có sẵn là kiến thức về giá trị khóa nào được trích xuất từ truy vấn xuất hiện trong một tỷ lệ kèo bóng đá 88 được lập chỉ tỷ lệ kèo bóng đá 88 nhất định. TheKiểm tra
Mảng có độ dàiNKEYS
, giống như số lượng khóa được trả về trước đóTrích xuất
cho điều nàyTruy vấn
Datum. Mỗi yếu tố củaKiểm tra
Mảng là đúng nếu tỷ lệ kèo bóng đá 88 được lập chỉ tỷ lệ kèo bóng đá 88 chứa khóa truy vấn tương ứng, tức là, nếu (kiểm tra [i] == true) phím thứ i củaTrích xuất
Mảng kết quả có mặt trong tỷ lệ kèo bóng đá 88 được lập chỉ tỷ lệ kèo bóng đá 88. Bản gốcTruy vấn
Datum đượ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ậyQuerykeys []
vànullflags []
mảng được trả về trước đóTrích xuất
. Extra_Data
là mảng dữ liệu thêm được trả về bởiTrích xuất
hoặcnull
Nếu không.
KhiTrích xuất
Trả về phím null trongQuerykeys []
, tương ứngKiểm tra []
Phần tử là đúng nếu tỷ lệ kèo bóng đá 88 được lập chỉ tỷ lệ kèo bóng đá 88 chứa khóa null; đó là ngữ nghĩa củaKiểm tra []
giống nhưkhông khác biệt với
. Thenhất quán
Hàm có thể kiểm tra tương ứngnullflags []
17696_17789
Thành công,*Recheck
nên được đặt thành true nếu tple heap cần được kiểm tra lại đối với toán tử truy vấn hoặc sai nếu kiểm tra chỉ tỷ lệ kèo bóng đá 88 là chính xác. Đó là, một giá trị trả về sai đảm bảo rằng Tuple 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
18262_18444
18511_18670
Triconsistent
giống vớinhất quán
, nhưng thay vì booleans trongKiểm tra
Vector, có ba giá trị có thể cho mỗi khóa:gin_true
, Gin_False
vàGin_Maybe
. Gin_False
vàGin_True
Có ý nghĩa tương tự như các giá trị boolean thông thường, trong khigin_maybe
có nghĩa là sự hiện diện của khóa đó không được biết đến. Khigin_maybe
Giá trị có mặt, hàm chỉ nên trả vềGin_True
Nếu tỷ lệ kèo bóng đá 88 chắc chắn khớp với việc tỷ lệ kèo bóng đá 88 chỉ tỷ lệ kèo bóng đá 88 có chứa các khóa truy vấn tương ứng hay không. Tương tự như vậy, hàm phải trả vềGin_False
Chỉ khi vật phẩm chắc chắn không khớp, liệu nó có chứaGin_Maybe
Khóa. Nếu kết quả phụ thuộc vàogin_maybe
Mục nhập, tức là, trận đấu không thể được xác nhận hoặc bác bỏ dựa trên các khóa truy vấn đã biết, chức tỷ lệ kèo bóng đá 88 phải trả vềgin_maybe
.
Khi không cógin_maybe
Giá trị trongKiểm tra
Vector, Agin_maybe
Giá trị trả về tương đương với việc cài đặtRECHECK
cờ trong booleannhất quán
chức tỷ lệ kèo bóng đá 88.
Ngoài ra, Gin phải có cách sắp xếp các giá trị chính được lưu trữ trong chỉ tỷ lệ kèo bóng đá 88. Lớp toán tử có thể xác định thứ tự sắp xếp bằng cách chỉ định phương thức so sánh:
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 phím thứ nhất có nhỏ hơn hoặc bằng hoặc lớn hơn thứ hai hay không. Các phím null không bao giờ được truyền cho chức tỷ lệ kèo bóng đá 88 này.
20909_20967so sánh
Phương thức, Gin sẽ tra cứu lớp toán tử Btree mặc định cho kiểu dữ liệu khóa chỉ mục và sử dụng chức tỷ lệ kèo bóng đá 88 so sánh của nó. Bạn nên chỉ định chức tỷ lệ kèo bóng đá 88 so sánh trong lớp toán tử GIN chỉ dành cho một kiểu dữ liệu, vì việc tìm kiếm lớp toán tử Btree có giá một vài chu kỳ. Tuy nhiên, các lớp toán tử GIN đa hình (chẳng hạn nhưArray_ops
) Thông thường không thể chỉ định tỷ lệ kèo bóng đá 88 hàm so sánh duy nhất.
Lớp toán tử choGinTùy chọn cung cấp các phương pháp sau:
21673_21761
So sánh khóa truy vấn khớp một phần với khóa chỉ tỷ lệ kèo bóng đá 88. Trả về một số nguyên có dấu cho biết kết quả: nhỏ hơn 0 có nghĩa là khóa chỉ tỷ lệ kèo bóng đá 88 không khớp với truy vấn, nhưng việc quét chỉ tỷ lệ kèo bóng đá 88 sẽ tiếp tục; Không có nghĩa là khóa chỉ tỷ lệ kèo bóng đá 88 phù hợp với truy vấn; Lớn hơn 0 chỉ ra rằng việc quét chỉ tỷ lệ kèo bóng đá 88 sẽ dừng vì không thể có nhiều trận đấu. Số chiến lượcn
của toán tử tạo truy vấn khớp tỷ lệ kèo bóng đá 88 phần được cung cấp, trong trường hợp ngữ nghĩa của nó là cần thiết để xác định khi nào nên kết thúc quá trình quét. Cũng,Extra_Data
là phần tử tương ứng của mảng dữ liệu phụ được thực hiện bởiTrích xuất
hoặcnull
Nếu không có. Các phím null không bao giờ được truyền cho chức tỷ lệ kèo bóng đá 88 này.
Tùy chọn void (local_relopts *relopts)
22725_22805
TheTùy chọn
Hàm được chuyển tỷ lệ kèo bóng đá 88 con trỏ cho Alocal_relopts
Struct, 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 tỷ lệ kèo bóng đá 88 hỗ trợ khác bằng cách sử dụngpg_has_opclass_options ()
23141_23148PG_GET_OPCLASS_OPTES ()
Macros.
Vì cả hai trích xuất chính của các giá trị được lập chỉ tỷ lệ kèo bóng đá 88 và biểu diễn của khóa trongGinlinh hoạt, chúng có thể phụ thuộc vào các tham số do người dùng chỉ định.
Để hỗ trợKết hợp tỷ lệ kèo bóng đá 88 phầnHồiTruy vấn, lớp toán tử phải cung cấpso sánhspartial
Phương pháp và nóTrích xuất
Phương thức phải đặtpmatch
tham số khi gặp truy vấn tỷ lệ kèo bóng đá 88 phần. Nhìn thấyPhần 67.4.2Để biết chi tiết.
Các loại dữ liệu thực tế của các loại khác nhauDatum
Các giá trị được đề cập ở trên thay đổi tùy thuộc vào lớp toán tử. Các giá trị tỷ lệ kèo bóng đá 88 được truyền đếnExtractValue
luôn thuộc loại đầu vào của lớp toán tử 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
, nhất quán
vàTriconsistent
là bất cứ thứ gì 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 được lập chỉ mục, miễn là các giá trị chính của loại chính xác có thể được trích xuất từ nó. Tuy nhiên, khuyến nghị các khai báo SQL của ba chức tỷ lệ kèo bóng đá 88 hỗ trợ này sử dụng loại dữ liệu được lập chỉ mục của OPClass choTruy vấn
Đối số, mặc dù loại thực tế có thể là thứ khác tùy thuộc vào toán tử.
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 tỷ lệ kèo bóng đá 88 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 liệu.