PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

PostgreSQL फ़ंक्शन शून्य लौट रहा है

(मैं इस स्रोत कोड का कोई विशेषज्ञ नहीं हूं। आपको चेतावनी दी गई है।)

स्रोत ऑनलाइन है यहां . मैंने फ़ाइल नाम छोड़े हैं; आप उनकी परिभाषाओं को खोजने के लिए फ़ंक्शननाम खोज सकते हैं। मैंने लाइन नंबर छोड़ दिया (आमतौर पर) क्योंकि इसे काटना और चिपकाना आसान है, और अलग-अलग लाइन नंबरों का मतलब होगा कि स्रोत बदल गया है।

लघुकथा यह है कि कुछ "शून्य" रिटर्न शायद खाली सीस्ट्रिंग (खाली नल-टर्मिनेटेड स्ट्रिंग्स) हैं, और अन्य शून्य पॉइंटर्स हैं।

यहां स्रोत के वे हिस्से दिए गए हैं जो प्रासंगिक लगते हैं।

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 }

हमारे पास

. भी है
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

तो यह मेरे लिए समझ में आता है कि एक उपयोगकर्ता द्वारा परिभाषित फ़ंक्शन जो PG_RETURN_VOID() के माध्यम से लौटाता है, उस के बराबर परीक्षण नहीं करेगा जो void_out() या void_send() के माध्यम से लौटाता है। मुझे अभी तक नहीं पता कि ऐसा क्यों है, लेकिन मुझे रुककर थोड़ी नींद लेनी होगी।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ऑर्डर बाय के साथ विभाजन में पंक्तियों की गणना करें

  2. अगली कड़ी त्रुटि:संबंध मौजूद नहीं है

  3. IP से देश का निर्धारण करें - IPv6

  4. पूर्णांक सीमा से बाहर है और शेष डिस्क स्थान आईडी को बिगिंट और अन्य समाधानों में बदलने के लिए बहुत छोटा है

  5. हम PostgreSQL में इसके नाम के बजाय एक पहचानकर्ता संख्या का उपयोग कब कर सकते हैं?