sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLC関数でint8[]配列を作成します

    関数construct_arrayを使用する必要があります またはconstruct_md_array

    #include "catalog/pg_type.h"
    
    PG_FUNCTION_INFO_V1(array_four);
    
    Datum
    array_four(PG_FUNCTION_ARGS)
    {
        Datum       elements[4];
        ArrayType   *array;
    
        elements[0] = PG_GETARG_DATUM(0);
        elements[1] = PG_GETARG_DATUM(1);
        elements[2] = PG_GETARG_DATUM(2);
        elements[3] = PG_GETARG_DATUM(3);
    
        array = construct_array(elements, 4, INT8OID, 8, true, 'd');
    
        PG_RETURN_POINTER(array);
    }
    

    2番目のバリアント:

    Datum
    array_four(PG_FUNCTION_ARGS)
    {
        Datum       elements[4];
        ArrayType   *array;
        int i;
    
        for (i = 0; i < 4; i++)
            elements[i] = Int64GetDatum(i);
    
        array = construct_array(elements, 4, INT8OID, 8, true, 'd');
    
        PG_RETURN_POINTER(array);
    }
    

    登録:

    CREATE FUNCTION array_four(int, int, int, int)
    RETURNS int[]
    AS 'MODULE_PATHNAME'
    LANGUAGE C IMMUTABLE STRICT;
    

    テスト:

    postgres=# select array_four(10,20,30,40);
    ┌───────────────┐
    │  array_four   │
    ╞═══════════════╡
    │ {10,20,30,40} │
    └───────────────┘
    (1 row)
    



    1. クイック挿入と複合一意キーのためのMyISAMとInnoDB

    2. MySQLで文字列を実行することは可能ですか?

    3. テーブル全体で単一の値を確認してください

    4. MySQLとTomcatが実行されているかどうかを確認するにはどうすればよいですか?