1. Saya membuat database dan menghubungkannya. Tapi ketika saya mengeksekusi
select optimizer;

Itu kembali

SELECT: identifier 'optimizer' unknown

Apa masalahnya? Dan saya tidak dapat menemukan tabel sys di database menggunakan \d.

  1. Jika saya ingin menambahkan pengoptimal myopt, apakah cukup untuk langkah-langkah di bawah ini:
    1. tulis opt_myopt.h dan opt_myopt.c di /monetdb5/optimizer/
    2. Tambahkan kode ke dalam kode di /monetdb5/optimizer/opt_wrapper.c
    3. Tambahkan fungsi ke optimizer_init_funcs di /monetdb5/optimizer/optimizer.c
    4. Tambahkan pipa baru di /monetdb5/optimizer/opt_pipes.c
0
Alan 8 Januari 2021, 11:57

3 jawaban

Jawaban Terbaik

Untuk pertanyaan pertama Anda: jika current_schema Anda bukan sys, Anda perlu menggunakan select sys.optimizer;.

Untuk pertanyaan kedua Anda: contoh terbaik yang ada mungkin ada di monetdb5/extras/mal_optimizer_template. Di samping itu, pada dasarnya memeriksa kode sumber untuk melihat bagaimana pengoptimal lain telah diterapkan. NB, meskipun tidak sering terjadi, internal MonetDB dapat berubah antar versi (utama). Saya akan merekomendasikan Anda untuk menggunakan Oct2020 atau yang lebih baru.

0
Jennie 8 Januari 2021, 11:45

Sejak Okt2020, variabel sekarang memiliki skema (untuk menyimpannya sebagai objek SQL lainnya). Di sesi Anda, 'sys' bukan skema sesi, itu sebabnya ia tidak dapat menemukan variabel 'pengoptimal', sama untuk tabel.

Di cabang default (akan tersedia di rilis berikutnya) saya menambahkan properti "jalur skema" pada pengguna untuk mencari objek SQL selain skema sesi saat ini. Secara default itu termasuk skema 'sys'.

1
PedroTadim 8 Januari 2021, 09:40

Mengenai pertanyaan kedua Anda,

Anda juga harus membuat dan menambahkan pipeline pengoptimal ke opt_pipes.c. Cari default_pipe lalu salin/tempel yang itu ke jalur pipa baru dan tambahkan pengoptimal Anda ke sana.

Ada beberapa tempat lain di mana Anda mungkin perlu menambahkan pengoptimal, seperti di larik codes[]di opt_wrapper.c. Cukup tiru salah satu pengoptimal standar seperti "reorder".

0
Aris Koning 8 Januari 2021, 13:36