sql >> Databáze >  >> RDS >> PostgreSQL

Funkce PostgreSQL vrací void

(Nejsem odborník na tento zdrojový kód. Byli jste varováni.)

Zdroj je online zde . Vynechal jsem názvy souborů; můžete vyhledat názvy funkcí a najít jejich definice. Ponechal jsem čísla řádků (obvykle), protože je snazší vyjmout a vložit a jiná čísla řádků znamenají, že se zdroj změnil.

Stručný příběh je, že některé "void" návraty jsou pravděpodobně prázdné cstringy (prázdné null ukončené řetězce) a jiné jsou null ukazatele.

Zde jsou části zdroje, které vypadají relevantní.

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 }

Máme také

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

Dává mi tedy smysl, že uživatelsky definovaná funkce, která se vrací prostřednictvím PG_RETURN_VOID(), by netestovala ekvivalentní funkci, která se vrací prostřednictvím void_out() nebo void_send(). Ještě nevím proč, ale musím se zastavit a trochu se vyspat.




  1. Dotaz tří spojených tabulek se vztahem many-to-many v JPA

  2. Spusťte 2 dotaz SQL s 1 dotazem pro uložení výsledku dotazu ve formátu CSV

  3. Je bezpečné umístit index na dočasnou tabulku Oracle?

  4. Jak najít duplikáty v tabulce mysql pomocí PHP?