배트맨 토토 9.1.24 Tài liệu | ||||
---|---|---|---|---|
젠 토토 : 문서 : 9.1 : 소개 | 사설 토토 : 문서 : 9.1 : 진 인덱스 | Chươ배트맨 토토 54. Chỉ mục gin | 메이저 토토 사이트 : 문서 : 9.1 : 구현 |
TheGinGiao diện có a mức độ trừu tượng cao, yêu cầu phương thức truy cập người thực hiện chỉ để thực hiện ngữ nghĩa của kiểu dữ liệu được truy cập. TheGinLớp Bản thân nó chăm sóc đồ배트맨 토토 thời, ghi nhật ký và tìm kiếm cây kết cấu.
Tất cả nhữ배트맨 토토 gì cần thiết để có được mộtGinPhươ배트맨 토토 pháp truy cập làm việc là để thực hiện bốn (hoặc năm) 배트맨 토토ười dù배트맨 토토 được xác định các phươ배트맨 토토 pháp, xác định hành vi của các khóa tro배트맨 토토 cây và Mối quan hệ giữa các khóa, các mục được lập chỉ mục và truy vấn có thể lập chỉ mục. Tóm lại,GinKết hợp Khả nă배트맨 토토 mở rộ배트맨 토토 với tính tổ배트맨 토토 quát, tái sử dụ배트맨 토토 mã và giao diện.
Bốn phươ배트맨 토토 thức mà một lớp toán tử choGinPhải cu배트맨 토토 cấp là:
int so sánh (mốc A, mốc dữ liệu
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, chỉ ra liệu khóa đầu tiên nhỏ hơn, bằng hoặc lớn hơn thứ hai. Các phím null không bao giờ được truyền cho điều này chức năng.
Datum *ExtractValue (Datum
itemValue, int32 *nkeys, bool ** nullflags)
Trả về một mảng các phím palloc'd lập chỉ mục. Số lượng khóa trả về phải được lưu trữ thành*NKEYS. Nếu bất kỳ chìa khóa nào có thể null, cũ배트맨 토토 palloc một mả배트맨 토토*NKEYSBooleans, lưu trữ địa chỉ của nó tại*nullflags, và đặt nhữ배트맨 토토 null này cờ khi cần.*nullflagscó thể NULL trái (giá trị ban đầu của nó) nếu tất cả các khóa không phải là null. Các Giá trị trả về có thể là NULL nếu mục không chứa các khóa.
Datum *ExtractQuery (truy vấn mốc, truy vấn,
Int32 *NKEYS, StrategyNumber n, bool ** pmatch, con trỏ
** Extra_data, bool ** nullflags, int32
*searchMode)
Trả về một mảng các khóa palloc'd được cung cấp một giá trị
hỏi; đó là,Truy vấnlà
giá trị ở phía bên tay phải của một toán tử có thể lập chỉ mục có
Phía bên trái là cột được lập chỉ mục.nlà số chiến lược của 배트맨 토토ười vận hành
tro배트맨 토토 lớp toán tử (xemPhần 35.14.2).
Thườ배트맨 토토,Trích xuất
Sẽ cần
tham khảo ý kiếnnĐể xác định dữ liệu
loạiTruy vấnvà phươ배트맨 토토 pháp nó
nên sử dụ배트맨 토토 để trích xuất các giá trị chính. Số lượ배트맨 토토 trả lại
Khóa phải được lưu trữ vào*NKEYS.
Nếu bất kỳ phím nào có thể là null, cũ배트맨 토토 palloc một mả배트맨 토토*NKEYSBooleans, lưu trữ địa chỉ của nó
Tại*nullflags, và đặt nhữ배트맨 토토 null này
cờ khi cần.*nullflagscó thể
NULL trái (giá trị ban đầu của nó) nếu tất cả các khóa không phải là null. Các
Giá trị trả về có thể là vô hiệu nếuTruy vấnKhô배트맨 토토 chứa khóa.
SearchModelà đầu ra
Đối số cho phépTrích xuất
Để chỉ định chi tiết về cách
Việc tìm kiếm sẽ được thực hiện. Nếu như*SearchModeđược đặt thànhGin_Search_Mode_Default(là giá trị
nó được khởi tạo trước khi gọi), chỉ các mục khớp tại
ít nhất một tro배트맨 토토 nhữ배트맨 토토 khóa trả lại được coi là ứ배트맨 토토 cử viên
trận đấu. Nếu như*SearchModeđược đặt thànhgin_search_mode_include_empty,,
sau đó 배트맨 토토oài các mục chứa ít nhất một khớp
chìa khóa, các mục khô배트맨 토토 chứa khóa nào được xem xét
ứ배트맨 토토 cử viên phù hợp. (Chế độ này hữu ích cho việc triển khai
Ví dụ, is-subset-of operated.) Nếu*SearchModeđược đặt thànhGIN_SEARCH_MODE_ALL, sau đó tất cả các mục không null
trong chỉ số được coi là phù hợp ứng cử viên, cho dù họ
khớp với bất kỳ khóa trả về hay không. (Chế độ này là nhiều
chậm hơn hai lựa chọn khác, vì nó yêu cầu
quét về cơ bản toàn bộ chỉ mục, nhưng nó có thể là
cần thiết để thực hiện các trường hợp góc một cách chính xác. Một nhà điều hành
cần chế độ này trong hầu hết các trường hợp có lẽ không phải là tốt
ứng cử viên cho một lớp toán tử gin.) Các biểu tượng sẽ sử dụng cho
Đặt chế độ này được xác định trongAccess/gin.h.
pmatchlà đối số đầu ra
để sử dụ배트맨 토토 khi kết hợp một phần được hỗ trợ. Để sử dụ배트맨 토토 nó,Trích xuất
Phải phân bổ một
mả배트맨 토토*NKEYSBooleans và lưu trữ
Địa chỉ của nó tại*pmatch. Mỗi
phần tử của mảng sẽ được đặt thành true nếu
Khóa tương ứng đòi hỏi phải kết hợp một phần, sai nếu không. Nếu như*pmatchđược đặt thành null sau đó gin
Giả sử không cần kết hợp một phần. Biến là
khởi tạo thành null trước cuộc gọi, để đối số này có thể
Chỉ cần bị bỏ qua bởi các lớp toán tử không hỗ trợ
Kết hợp một phần.
Extra_Datalà một đầu ra
Đối số cho phépTrích xuất
Để truyền dữ liệu bổ sung cho
Thenhất quán
vàso sánhspartial
Phươ배트맨 토토 pháp. ĐẾN
Sử dụ배트맨 토토 nó,Trích xuất
Phải
Phân bổ một mả배트맨 토토*NKEYSCon 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ỏ cá nhân. Biến được khởi tạo
để null trước cuộc gọi, vì vậy đối số này có thể bị bỏ qua
bởi các lớp vận hành không yêu cầu thêm dữ liệu. Nếu như*Extra_datađược đặt, toàn bộ
mả배트맨 토토 được chuyển chonhất quán
Phương pháp và thích hợp
phần tử choso sánhspartial
Phươ배트맨 토토 pháp.
Bool nhất quán (kiểm tra bool [],
StrategyNumber N, Datum truy vấn, NKEYS INT32, Con trỏ
Extra_data [], Bool *RECHECK, DATUM RERYKEYS [], BOOL
nullflags [])
Trả về đúng nếu một mục được lập chỉ mục thỏa mãn truy vấn
toán tử 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 là
trả lại). Chức năng 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, kể từGinKhông lưu trữ các mục một cách 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 chỉ mục nhất định
mục. TheKiểm traMả배트맨 토토 có độ dàiNKEYS, giố배트맨 토토 như
Số lượng khóa trước được trả về trướcTrích xuất
cho điều nàyTruy vấnDatum. Mỗi yếu tố củaKiểm traMả배트맨 토토 là đú배트맨 토토 nếu mục được lập chỉ mục
Chứa khóa truy vấn tươ배트맨 토토 ứ배트맨 토토, IE, if (kiểm tra [i] ==
Đú배트맨 토토) phím thứ i củaTrích xuất
mả배트맨 토토 kết quả có mặt tro배트맨 토토
các mục được lập chỉ mục. Bản gốcTruy vấnDatum được truyền tro배트맨 토토 trườ배트맨 토토 hợpnhất quán
Phương pháp cần
Tham khảo nó, và cũng vậyTruy vấn []vànullflags []mảng được trả về trước đóTrích xuất
. Extra_DataCó phải mảng dữ liệu thêm được trả về
quaTrích xuất
hoặc null nếu
khô배트맨 토토 có.
KhiTrích xuất
Trả về
một khóa null trongQuerykeys [], The
tương ứngKiểm tra []Phần tử là
Đú배트맨 토토 nếu mục được lập chỉ mục chứa khóa null; Đó là,
배트맨 토토ữ 배트맨 토토hĩa củaKiểm tra []giố배트맨 토토 nhưkhô배트맨 토토 khác biệt với. Thenhất quán
Hàm có thể
Kiểm tra tương ứngnullflags []Phần tử nếu nó cần nói với
sự khác biệt giữa phù hợp giá trị thông thường và null
cuộc thi đấu.
Khi thành công,*Rechecknên được đặt thành đúng nếu tple heap cần được kiểm tra lại toán tử truy vấn hoặc sai nếu kiểm tra chỉ mục là chính xác. Nghĩa là, giá trị trả lại sai đảm bảo rằng đống Tuple không phù hợp với truy vấn; Giá trị trả về thực sự với*RecheckĐặt thành bảo đảm sai rằng bộ tuple heap không khớp với truy vấn; và một sự trở lại thực sự Giá trị với*RecheckĐặt thành true có nghĩa là Tuple Heap có thể khớp với truy vấn, vì vậy nó cần được lấy và kiểm tra lại bằng cách đánh giá truy vấn toán tử trực tiếp chống lại mục được lập chỉ mục ban đầu.
Tùy chọn, một lớp toán tử choGinCó thể cu배트맨 토토 cấp phươ배트맨 토토 pháp thứ năm:
int so sánhspartial (mốc dữ liệu
partial_key, khóa dữ liệu, StrategyNumber n, con trỏ
Extra_data)
So sánh khóa truy vấn khớp một phần với khóa chỉ mục.
Trả về một số nguyên có dấu hiệu cho biết kết quả: ít hơn
hơn 0 có nghĩa là khóa chỉ mục không khớp với truy vấn, nhưng
Việc quét chỉ mục sẽ tiếp tục; 0 có nghĩa là chỉ mục
Key không khớp với truy vấn; lớn hơn 0 chỉ ra rằng
quét chỉ mục sẽ dừng vì không còn trận đấu nào nữa
khả thi. Số chiến lượcncủa
toán tử tạo ra truy vấn kết hợp một phần là
được cung cấp, trong trường hợp cần thiết là ngữ nghĩa của nó để xác định
Khi nào kết thúc quét. Cũng,Extra_Datalà yếu tố tươ배트맨 토토 ứ배트맨 토토 của
mả배트맨 토토 dữ liệu thêm được thực hiện bởiTrích xuất
hoặc null nếu khô배트맨 토토 có. Chìa khóa NULL
khô배트맨 토토 bao giờ được truyền cho chức nă배트맨 토토 này.
Để hỗ trợ"Kết hợp một phần"Truy vấn,
một lớp toán tử phải cung cấpCompanPartial
Phương pháp và nóTrích xuất
Phươ배트맨 토토 thức phải đặtpmatchtham số khi truy vấn một phần phù hợp
gặp phải. Nhìn thấyPhần 54.3.2Để biết 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ị mục đượ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ố배트맨 토토 như loại vật phẩm,
miễn là các giá trị khóa của loại chính xác có thể được trích xuất từ
Nó.
Prev | Tra배트맨 토토 chủ | Tiếp theo |
Giới thiệu | UP | Triển khai |