PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Các hàm PostgreSQL trả về void

(Tôi không phải là chuyên gia về mã nguồn này. Bạn đã được cảnh báo.)

Nguồn trực tuyến tại đây . Tôi đã bỏ qua các tên tệp; bạn có thể tìm kiếm các tên hàm để tìm định nghĩa của chúng. Tôi để lại số dòng (thường là) vì dễ cắt và dán hơn, và các số dòng khác nhau có nghĩa là nguồn đã thay đổi.

Câu chuyện ngắn là một số kết quả trả về "void" có thể là chuỗi rỗng (chuỗi rỗng có kết thúc bằng rỗng) và một số khác là con trỏ rỗng.

Dưới đây là các phần của nguồn có vẻ phù hợp.

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 }

Chúng tôi cũng có

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

Vì vậy, tôi hiểu rằng một hàm do người dùng định nghĩa trả về thông qua PG_RETURN_VOID () sẽ không kiểm tra tương đương với một hàm trả về thông qua void_out () hoặc void_send (). Tôi vẫn chưa biết tại sao lại như vậy, nhưng tôi phải dừng lại và đi ngủ một chút.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. LISTEN / NOTIFY bằng cách sử dụng pg_notify (text, text) trong PostgreSQL

  2. Những điều quan trọng cần theo dõi trong PostgreSQL - Phân tích khối lượng công việc của bạn

  3. Chế độ postgresql H2 dường như không hoạt động với tôi

  4. Không thể chèn hàng mới vào bảng cơ sở dữ liệu postgres?

  5. Số liệu thống kê về độ phủ của mã