PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Fungsi PostgreSQL mengembalikan batal

(Saya bukan ahli dalam kode sumber ini. Anda telah diperingatkan.)

Sumbernya online di sini . Saya telah menghilangkan nama file; Anda dapat mencari nama fungsi untuk menemukan definisinya. Saya meninggalkan nomor baris (biasanya) karena lebih mudah untuk memotong dan menempel, dan nomor baris yang berbeda berarti sumbernya telah berubah.

Singkat cerita adalah bahwa beberapa pengembalian "void" mungkin adalah cstring kosong (string kosong yang diakhiri dengan nol), dan yang lainnya adalah pointer nol.

Berikut adalah bagian dari sumber yang terlihat relevan.

00228 /*
00229  * void_out     - output routine for pseudo-type VOID.
00230  *
00231  * We allow this so that "SELECT function_returning_void(...)" works.
00232  */
00233 Datum
00234 void_out(PG_FUNCTION_ARGS)
00235 {
00236     PG_RETURN_CSTRING(pstrdup(""));
00237 }

00251 /*
00252  * void_send    - binary output routine for pseudo-type VOID.
00253  *
00254  * We allow this so that "SELECT function_returning_void(...)" works
00255  * even when binary output is requested.
00256  */
00257 Datum
00258 void_send(PG_FUNCTION_ARGS)
00259 {
00260     StringInfoData buf;
00261 
00262     /* send an empty string */
00263     pq_begintypsend(&buf);
00264     PG_RETURN_BYTEA_P(pq_endtypsend(&buf));
00265 }

Kami juga memiliki

00285 /* To return a NULL do this: */
00286 #define PG_RETURN_NULL()  \
00287     do { fcinfo->isnull = true; return (Datum) 0; } while (0)
00288 
00289 /* A few internal functions return void (which is not the same as NULL!) */
00290 #define PG_RETURN_VOID()     return (Datum) 0

Jadi masuk akal bagi saya bahwa fungsi yang ditentukan pengguna yang kembali melalui PG_RETURN_VOID() tidak akan menguji setara dengan yang kembali melalui void_out() atau void_send(). Aku belum tahu kenapa, tapi aku harus berhenti dan tidur.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menemukan poligon tetangga - kueri postgis

  2. Memanggil prosedur tersimpan di Postgresql melalui F# dan Npgsql

  3. Menambahkan komentar ke kolom saat saya membuat tabel di PostgreSQL?

  4. Instal PHP dengan Postgresql di MAC menggunakan homebrew

  5. Optimalkan operasi INSERT / UPDATE / DELETE