Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mencegah konflik UDF penamaan
Anda dapat menghindari potensi konflik dan hasil yang tidak terduga dengan mempertimbangkan konvensi UDF penamaan Anda sebelum implementasi. Karena nama fungsi dapat kelebihan beban, mereka dapat bertabrakan dengan nama fungsi Amazon Redshift yang ada dan yang akan datang. Topik ini membahas kelebihan beban dan menyajikan strategi untuk menghindari konflik.
Nama fungsi overloading
Fungsi diidentifikasi dengan nama dan tanda tangannya, yang merupakan jumlah argumen input dan tipe data argumen. Dua fungsi dalam skema yang sama dapat memiliki nama yang sama jika mereka memiliki tanda tangan yang berbeda. Dengan kata lain, nama fungsi bisa kelebihan beban.
Saat Anda menjalankan kueri, mesin kueri menentukan fungsi mana yang akan dipanggil berdasarkan jumlah argumen yang Anda berikan dan tipe data argumen. Anda dapat menggunakan overloading untuk mensimulasikan fungsi dengan sejumlah variabel argumen, hingga batas yang diizinkan oleh perintah. CREATE FUNCTION
Menghindari konflik dengan fungsi Amazon Redshift bawaan
Kami menyarankan Anda memberi nama semua UDFs menggunakan awalanf_
. Amazon Redshift menyimpan f_
awalan khusus untuk UDFs dan dengan mengawali nama Andaf_
, Anda memastikan bahwa UDF nama Anda tidak akan bertentangan dengan UDF nama fungsi bawaan Amazon Redshift yang ada atau yang akan datang. SQL Misalnya, dengan memberi nama yang baru UDFf_sum
, Anda menghindari konflik dengan fungsi Amazon RedshiftSUM. Demikian pula, jika Anda memberi nama fungsi baruf_fibonacci
, Anda menghindari konflik jika Amazon Redshift menambahkan fungsi bernama FIBONACCI dalam rilis future.
Anda dapat membuat UDF dengan nama dan tanda tangan yang sama dengan SQL fungsi bawaan Amazon Redshift yang ada tanpa nama fungsi kelebihan beban jika UDF dan fungsi bawaan ada dalam skema yang berbeda. Karena fungsi bawaan ada dalam skema katalog sistem, pg_catalog, Anda dapat membuat UDF dengan nama yang sama di skema lain, seperti skema publik atau yang ditentukan pengguna. Dalam beberapa kasus, Anda mungkin memanggil fungsi yang tidak secara eksplisit memenuhi syarat dengan nama skema. Jika demikian, Amazon Redshift mencari skema pg_catalog terlebih dahulu secara default. Dengan demikian, fungsi bawaan berjalan sebelum yang baru UDF dengan nama yang sama.
Anda dapat mengubah perilaku ini dengan menyetel jalur pencarian untuk menempatkan pg_catalog di akhir. Jika Anda melakukannya, Anda lebih UDFs diutamakan daripada fungsi bawaan, tetapi praktik tersebut dapat menyebabkan hasil yang tidak terduga. Mengadopsi strategi penamaan yang unik, seperti menggunakan awalan cadanganf_
, adalah praktik yang lebih andal. Untuk informasi selengkapnya, silakan lihat SET dan search_path.