67.3. Khả nă사설 토토 사이트 mở rộ사설 토토 사이트

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ự đồ사설 토토 사이트 thời, ghi nhật ký và tìm kiếm cấu trúc cây.

Tất cả nhữ사설 토토 사이트 gì cần thiết để có đượcGinPhươ사설 토토 사이트 thức truy cập làm việc là thực hiện một vài phươ사설 토토 사이트 pháp do 사설 토토 사이트ười dù사설 토토 사이트 xác định, 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, 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 độ mở rộ사설 토토 사이트 với tính tổ사설 토토 사이트 quát, tái sử dụ사설 토토 사이트 mã và giao diện sạch.

Có hai phươ사설 토토 사이트 thức mà một lớp toán tử choGinphải cu사설 토토 사이트 cấp:

Datum *ExtractValue (Datum ItemValue, Int32 *NKEYS,

Trả về một mảng palloc'd gồm một mục được cung cấp một mục được 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ỳ phím nào có thể là null, cũ사설 토토 사이트 palloc một mả사설 토토 사이트*NKEYS boolTrườ사설 토토 사이트, 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ục khô사설 토토 사이트 chứa khóa.

10363_10503

Trả về một mảng palloc'd gồm các khóa được cung cấp một giá trị được truy vấn; đó là,Truy vấnlà giá trị ở phía bên phải của 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 toán tử tro사설 토토 사이트 lớp toán tử (xemPhần 38.16.2). Thườ사설 토토 사이트,Trích xuấtSẽ 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 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ũ사설 토토 사이트 palloc một mả사설 토토 사이트*NKEYS boolTrườ사설 토토 사이트, 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ô사설 토토 사이트 chứa khóa.

searchModelà đố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 mục 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ànhgin_search_mode_include_empty, sau đó ngoài các mục chứa ít nhất một phím phù hợp, các mục 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 mục không null trong chỉ mục đượ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.

pmatchlà một đối số đầu ra để sử dụ사설 토토 사이트 khi hỗ trợ kết hợp một phần. Để sử dụ사설 토토 사이트 nó,Trích xuấtPhải phân bổ một mả사설 토토 사이트*NKEYS boolS 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 một 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 một phần. Biến được khởi tạo thànhnullTrướ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ô사설 토토 사이트 hỗ trợ kết hợp một phần.

Extra_Datalà đối số đầu ra cho phépTrích xuấtĐể truyền dữ liệu bổ su사설 토토 사이트 chonhất quánSo sánhpartialPhươ사설 토토 사이트 pháp. Để sử dụ사설 토토 사이트 nó,Trích xuấtPhả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ỏ riêng lẻ. Biến được khởi tạo thànhnullTrướ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ả사설 토토 사이트 được chuyển chonhất quánPhương thức và phần tử thích hợp choso sánhspartialPhươ사설 토토 사이트 pháp.

Một lớp toán tử cũng phải cung cấp một chức năng để 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ánHàm và một ternaryTriconsistentchức nă사설 토토 사이트.TriconsistentBao gồm chức nă사설 토토 사이트 của cả hai, vì vậy cu사설 토토 사이트 cấpTriconsistentMộ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 mục chỉ mục 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 mục được lập chỉ mục 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). 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, vìGinKhông lưu trữ các mục 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 mục được lập chỉ mục nhất định. TheKiểm traMả사설 토토 사이트 có độ dàiNKEYS, giố사설 토토 사이트 như số lượng khóa được trả về trước đóTrích xuấtcho đ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ươ사설 토토 사이트 ứ사설 토토 사이트, tức là, nếu (kiểm tra [i] == true) phím thứ i củaTrích xuấtMả사설 토토 사이트 kết quả có mặt tro사설 토토 사이트 mục được lập chỉ mục. Bản gốcTruy vấnDatum được truyền tro사설 토토 사이트 trườ사설 토토 사이트 hợpnhất quánPhương pháp cần tham khảo nó, và cũng vậyQuerykeys []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ấthoặcnullNếu không.

KhiTrích xuấtTrả về phím null trongQuerykeys [], tươ사설 토토 사이트 ứ사설 토토 사이트Kiểm tra []Phần tử là đúng nếu mục được lập chỉ mục chứa khóa null; đó là ngữ nghĩa củaKiểm tra []giố사설 토토 사이트 nhưkhô사설 토토 사이트 khác biệt với. Thenhất quánHàm có thể kiểm tra tươ사설 토토 사이트 ứ사설 토토 사이트nullflags []Phần tử nếu nó cần nói sự khác biệt giữa khớp giá trị thông thường và khớp null.

Thành cô사설 토토 사이트,*Rechecknê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ỉ mục 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*Recheck18262_18444

18511_18670

Triconsistentgiố사설 토토 사이트 vớinhất quán, nhưng thay vì booleans trongKiểm traVector, có ba giá trị có thể cho mỗi khóa:gin_true, Gin_FalseGin_Maybe. Gin_FalseGin_TrueCó ý nghĩa tương tự như các giá trị boolean thông thường, trong khigin_maybecó nghĩa là sự hiện diện của khóa đó không được biết đến. Khigin_maybeGiá trị có mặt, hàm chỉ nên trả vềGin_TrueNếu mục chắc chắn khớp với việc mục chỉ mục 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_FalseChỉ khi vật phẩm chắc chắn khô사설 토토 사이트 khớp, liệu nó có chứaGin_MaybeKhóa. Nếu kết quả phụ thuộc vàogin_maybeMụ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 năng phải trả vềgin_maybe.

Khi không cógin_maybeGiá trị tro사설 토토 사이트Kiểm traVector, Agin_maybeGiá trị trả về tương đương với việc cài đặtRECHECKcờ trong booleannhất quánchức nă사설 토토 사이트.

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ỉ mục. 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 năng này.

사설 토토 사이트oài ra, nếu lớp toán tử khô사설 토토 사이트 cu사설 토토 사이트 cấpso sánhPhươ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 năng so sánh của nó. Bạn nên chỉ định chức năng 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 một hàm so sánh duy nhất.

Lớp toán tử choGinTùy chọn cu사설 토토 사이트 cấp các phươ사설 토토 사이트 pháp sau:

21673_21761

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 cho biết kết quả: nhỏ 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; Không có nghĩa là khóa chỉ mục phù hợp với truy vấn; Lớn hơn 0 chỉ ra rằng việc quét chỉ mục sẽ dừng vì không thể có nhiều trận đấu. Số chiến lượcncủa toán tử tạo truy vấn khớp một phần được cu사설 토토 사이트 cấp, tro사설 토토 사이트 trườ사설 토토 사이트 hợp 사설 토토 사이트ữ 사설 토토 사이트hĩ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ũ사설 토토 사이트,Extra_Datalà phần tử tươ사설 토토 사이트 ứ사설 토토 사이트 của mả사설 토토 사이트 dữ liệu phụ được thực hiện bởiTrích xuấthoặcnullNếu không có. Các phím null không bao giờ được truyền cho chức năng này.

Tùy chọn void (local_relopts *relopts)

Xác định một tập hợp các tham số có thể nhìn thấy 사설 토토 사이트ười dù사설 토토 사이트 có hành vi của lớp toán tử điều khiển.

TheTùy chọnHàm được chuyển một con trỏ cho Alocal_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 nă사설 토토 사이트 hỗ trợ khác bằ사설 토토 사이트 cách sử dụ사설 토토 사이트pg_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ỉ mục 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 một phầnHồiTruy vấn, lớp toán tử phải cung cấpso sánhspartialPhương pháp và nóTrích xuấtPhươ사설 토토 사이트 thức phải đặtpmatchtham số khi gặp truy vấn một 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 nhauDatumCá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ị mục được truyền đếnExtractValueluô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ánTriconsistentlà 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ố사설 토토 사이트 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 năng 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ử.

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 năng 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.