9078_9124tsmroutine
Cấu trúc chứa kèo chấp bóng đá hôm nay con trỏ cho kèo chấp bóng đá hôm nay chức năng hỗ trợ được mô tả dưới đây. Hầu hết kèo chấp bóng đá hôm nay chức năng được yêu cầu, nhưng một số là tùy chọn và những con trỏ đó có thể là vô giá trị.
VOID SamplesCangetSamplesize (Root PlannerInfo *, Reloptinfo *baserel, Danh sách *Paramexprs, BlockNumber *trang, Double *Tuples);
Hàm này được gọi trong quá trình lập kế hoạch. Nó phải ước tính số lượng kèo chấp bóng đá hôm nay trang quan hệ sẽ được đọc trong quá trình quét mẫu và số lượng kèo chấp bóng đá hôm nay bộ dữ liệu sẽ được chọn bằng cách quét. (Ví dụ: chúng có thể được xác định bằng cách ước tính phần lấy mẫu, sau đó nhânBaserel- trang
vàBaserel- Tuples
số đó, chắc chắn sẽ làm tròn kèo chấp bóng đá hôm nay kết quả để kèo chấp bóng đá hôm nay giá trị tích hợp.)Paramexprs
Danh sách giữ (kèo chấp bóng đá hôm nay) biểu thức là kèo chấp bóng đá hôm nay tham số choBảng kèo chấp bóng đá hôm nay
mệnh đề. Nên sử dụng10246_10275
Để cố gắng giảm kèo chấp bóng đá hôm nay biểu thức này thành hằng số, nếu giá trị của chúng là cần thiết cho mục đích ước tính; Nhưng hàm phải cung cấp ước tính kích thước ngay cả khi chúng không thể giảm và nó không bị hỏng ngay cả khi kèo chấp bóng đá hôm nay giá trị có vẻ không hợp lệ (hãy nhớ rằng chúng chỉ ước tính về giá trị thời gian chạy sẽ là gì). Thetrang
vàTuples
tham số là đầu ra.
Void Initsamplescan (nút samplescanstate *, int eflags);
Khởi tạo để thực hiện nút Kế hoạch Samplescan. Điều này được gọi trong quá trình khởi động thực thi. Nó sẽ thực hiện bất kỳ khởi tạo cần thiết trước khi xử lý có thể bắt đầu. TheSamplescanstate
Node đã được tạo, nhưng nóTSM_STATE
Trường là null. Theinitsamplescan
11177_11292Node- tsm_state
. Thông tin về bảng để quét có thể truy cập được thông qua kèo chấp bóng đá hôm nay trường khác củaSamplescanstate
nút (nhưng lưu ý rằngNode- SS.SS_CURINSCANDESC
Bộ mô tả quét chưa được thiết lập).EFLAGS
Chứa kèo chấp bóng đá hôm nay bit cờ mô tả chế độ hoạt động của người thực thi cho nút kế hoạch này.
Khi(eflags & exec_flag_explain_only)
11781_11920Giải thích
vàendmplescan
.
Hàm này có thể được bỏ qua (đặt con trỏ thành NULL), trong trường hợp đóBeginAmplescan
Phải thực hiện tất cả kèo chấp bóng đá hôm nay khởi tạo cần thiết bằng phương pháp lấy mẫu.
Void BeginsAmplescan (Nút Samplescanstate *, Datum *params, int nparams, hạt uint32);
Bắt đầu thực hiện quét lấy mẫu. Điều này được gọi ngay trước lần thử đầu tiên để lấy một tuple và có thể được gọi lại nếu quét cần được khởi động lại. Thông tin về bảng để quét có thể truy cập được thông qua kèo chấp bóng đá hôm nay trường củaSamplescanstate
nút (nhưng lưu ý rằngNode- SS.SS_CurrentsCandesc
Bộ mô tả quét chưa được thiết lập). Theparams
mảng, độ dàinparams
, chứa kèo chấp bóng đá hôm nay giá trị của kèo chấp bóng đá hôm nay tham số được cung cấp trongBảng kèo chấp bóng đá hôm nay
mệnh đề. Chúng sẽ có số và loại được chỉ định trong phương thức lấy kèo chấp bóng đá hôm nayparameterTypes
Danh sách và đã được kiểm tra để không được NULL.hạt giống
chứa một hạt giống để sử dụng cho bất kỳ số ngẫu nhiên nào được tạo trong phương thức lấy kèo chấp bóng đá hôm nay; nó là một hàm băm có nguồn gốc từLặp lại
Giá trị nếu được đưa ra hoặc kết quả củangẫu nhiên ()
nếu không.
Hàm này có thể điều chỉnh kèo chấp bóng đá hôm nay trườngNode- use_bulkread
vàNode- use_pagemode
. Nếu nhưNode- use_bulkread
làTRUE
, theo mặc định, việc quét sẽ sử dụng chiến lược truy cập bộ đệm khuyến khích bộ đệm tái chế sau khi sử dụng. Có thể hợp lý khi đặt cái này thànhSai
Nếu quét sẽ chỉ truy cập một phần nhỏ kèo chấp bóng đá hôm nay trang của bảng. Nếu nhưNode- use_pagemode
là13990_13996
, theo mặc định, việc quét sẽ thực hiện kiểm tra khả năng hiển thị trong một lần vượt qua cho tất cả kèo chấp bóng đá hôm nay bộ dữ liệu trên mỗi trang đã truy cập. Có thể hợp lý khi đặt cái này thànhfalse
Nếu quét sẽ chỉ chọn một phần nhỏ kèo chấp bóng đá hôm nay bộ dữ liệu trên mỗi trang được truy cập. Điều đó sẽ dẫn đến ít kiểm tra khả năng hiển thị hơn được thực hiện, mặc dù mỗi cái sẽ đắt hơn vì nó sẽ yêu cầu khóa nhiều hơn.
Nếu phương thức lấy kèo chấp bóng đá hôm nay được đánh dấulặp lại_across_scans
14516_14631BeginsAmplescan
phải dẫn đến việc chọn cùng một bộ dữ liệu như trước đây (nếuBảng kèo chấp bóng đá hôm nay
tham số và hạt giống không thay đổi).
14842_14898
Trả về số khối của trang tiếp theo sẽ được quét hoặckhông hợp lệ
Nếu không có trang nào được quét.
Hàm này có thể được bỏ qua (đặt con trỏ thành NULL), trong trường hợp đó, mã lõi sẽ thực hiện quét tuần tự toàn bộ mối quan hệ. Việc quét như vậy có thể sử dụng quét đồng bộ hóa, do đó phương thức lấy mẫu không thể cho rằng kèo chấp bóng đá hôm nay trang quan hệ được truy cập theo cùng một thứ tự trên mỗi lần quét.
offsetNumber NextSampletuple (nút Samplescanstate *, Blocknumber blockno, OffsetNumber maxoffset);
Trả về số bù của phần tiếp theo được lấy kèo chấp bóng đá hôm nay trên trang được chỉ định hoặckhông hợp lệ offsetNumber
Nếu không được lấy kèo chấp bóng đá hôm nay.maxoffset
là số bù lớn nhất được sử dụng trên trang.
NextSampletuple
không được nói rõ ràng về số bù nào trong phạm vi1 .. Maxoffset
thực sự chứa kèo chấp bóng đá hôm nay bộ dữ liệu hợp lệ. Đây thường không phải là một vấn đề vì mã cốt lõi bỏ qua kèo chấp bóng đá hôm nay yêu cầu để lấy mẫu kèo chấp bóng đá hôm nay bộ dữ liệu bị thiếu hoặc vô hình; Điều đó không nên dẫn đến bất kỳ sự thiên vị nào trong mẫu. Tuy nhiên, nếu cần, chức năng có thể kiểm tra16263_16314
Để xác định bộ dữ liệu nào hợp lệ và hiển thị. (Điều này yêu cầuNode- use_pagemode
To BeTRUE
.)
NextSampletuple
phảikhôngGiả sử rằngblockno
là cùng một số trang được trả về bởi gần đây nhấtNextSampleBlock
Gọi. Nó đã được trả lại bởi một số trướcNextSampleBlock
Gọi, nhưng mã cốt lõi được phép gọiNextSampleBlock
Trước thực sự của kèo chấp bóng đá hôm nay trang quét, để hỗ trợ trước. Bạn có thể giả định rằng một lần lấy mẫu của một trang nhất định bắt đầu, liên tiếpNextSampletuple
Gọi tất cả đều tham khảo cùng một trang cho đến khiKhông hợp lệ OfferSetNumber
được trả về.
Void Endsamplescan (samplescanstate *nút);
Kết thúc tài nguyên quét và phát hành. Thông thường không quan trọng để phát hành bộ nhớ palloc'd, nhưng bất kỳ tài nguyên nào có thể nhìn nhận được bên ngoài nên được làm sạch. Chức năng này có thể được bỏ qua (đặt con trỏ thành NULL) trong trường hợp phổ biến mà không có tài nguyên nào tồn tại.