All Products
Search
Document Center

ApsaraDB RDS:Kompatibilitas instans analitis berbasis DuckDB

Last Updated:Jun 05, 2026

Topik ini menjelaskan kompatibilitas instans analitis berbasis DuckDB yang disediakan oleh ApsaraDB RDS for MySQL.

Catatan

Catatan kompatibilitas berikut berlaku hanya jika parameter duckdb_sql_normalization diaktifkan.

Tipe data yang didukung

Tabel berikut mencantumkan hanya tipe data yang perilakunya berbeda antara instans analitis berbasis DuckDB dan MySQL.

Type

Tipe data MySQL

Kompatibilitas

String types

CHAR, VARCHAR

Hanya set karakter dan collation UTF-8 yang didukung.

Time types

TIME

Instans analitis berbasis DuckDB mendukung rentang '00:00:00'~'23:59:59', dengan format data 'HH:MM:SS'.

MySQL mendukung rentang '-838:59:59'~'838:59:59'. Karena keduanya berbeda dalam rentang yang didukung, jika data berada di luar rentang yang didukung oleh instans analitis berbasis DuckDB, hasil kueri mungkin tidak konsisten.

DATE

Instans analitis berbasis DuckDB mendukung rentang dari '0001-01-01' hingga '9999-12-31', dengan format data 'YYYY-MM-DD'.

Untuk rentang '0000-00-00' hingga '0001-01-01', MySQL mendukungnya tetapi DuckDB tidak, sehingga hasil kueri mungkin tidak konsisten.

DATETIME

Rentang yang didukung untuk instans analitis berbasis DuckDB adalah 0001-01-01 00:00:00.000000 UTC hingga 9999-12-31 00:00:00.999999 UTC dalam format YYYY-MM-DD HH:MM:SS.MS.

Untuk data dalam rentang '0000-00-00 00:00:00' hingga '0001-01-01 00:00:00', MySQL mendukungnya tetapi DuckDB tidak, yang dapat menyebabkan hasil kueri tidak konsisten.

Spatial data types

GEOMETRY, POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRYCOLLECTION

Tidak kompatibel

Batasan pada pernyataan SELECT

  • Konversi set karakter

    Untuk fungsi konversi set karakter, terlepas dari set karakter target, semua konversi distandarkan ke set karakter utf8mb4 dan diteruskan ke DuckDB untuk dieksekusi. Contohnya:

    SELECT convert(id using gbk) FROM t1;
    SELECT cast(id AS CHAR CHARACTER SET utf8mb4) FROM t1;
  • Unit interval

    Unit interval berikut tidak didukung:

    YEAR_MONTH, DAY_HOUR, HOUR_MINUTE, DAY_MINUTE, HOUR_SECOND, DAY_SECOND, SECOND_MICROSECOND, HOUR_MICROSECOND, DAY_MICROSECOND, MINUTE_SECOND, MINUTE_MICROSECOND, SQL_TSI_HOUR
  • Subkueri

    Subkueri non-skalar dengan kondisi kesamaan tidak didukung. Contoh:

    SELECT * FROM t1 WHERE (id, col1) = (SELECT id, col1 FROM t1);
  • Konversi tipe BINARY(num)

    Konversi eksplisit ke tipe data BINARY(num) tidak didukung, dan panjang bit yang ditentukan akan diabaikan. Contoh:

    SELECT CAST('abc' AS binary(1));
  • Konversi tipe UNSIGNED

    Konversi eksplisit ke tipe data UNSIGNED tidak didukung. Contohnya:

    SELECT CAST(1 AS UNSIGNED);

Masalah konversi tipe data

Untuk efisiensi eksekusi optimal, instans analitis berbasis DuckDB menerapkan batasan tipe yang ketat selama eksekusi. Saat kueri dieksekusi, sistem secara otomatis melakukan konversi tipe berdasarkan konteks—proses ini disebut konversi tipe implisit. Pada skenario di mana konversi tidak dapat diselesaikan secara implisit, Anda harus menggunakan fungsi CAST atau CONVERT untuk menentukan konversi tipe secara eksplisit guna memastikan kueri dieksekusi dengan benar.

Aturan untuk konversi tipe implisit dalam fungsi

Catatan
  • / menunjukkan bahwa tidak ada konversi implisit yang terlibat. ✔️ menunjukkan bahwa konversi implisit didukung. ✖️ menunjukkan bahwa konversi implisit tidak didukung.

  • Tipe string reguler mengacu pada tipe data MySQL berikut: CHAR, VARCHAR, TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT, JSON, SET, dan ENUM.

  • Tipe string biner mengacu pada tipe data MySQL berikut: BINARY, VARBINARY, BIT, TINYBLOB, BLOB, MEDIUMBLOB, dan LONGBLOB.

  • Konversi dari tipe integer dengan rentang nilai lebih besar ke tipe integer dengan rentang nilai lebih kecil tidak didukung.

Konversi ke tipe skalar dasar

Tipe sumber

Konversi implisit ke tipe skalar dasar

Literal string

Literal numerik

Skalar dasar

Literal string

/

✖️

Literal numerik

✖️

/

Nilai

BOOLEAN

✖️

✖️

Tipe integer

✖️

✖️

FLOAT

✖️

✖️

DOUBLE

✖️

✖️

DECIMAL

✖️

✖️

String

String reguler

✖️

✖️

String biner

✖️

✖️

Tanggal dan waktu

YEAR

✖️

✖️

DATE

✖️

✖️

TIME

✖️

✖️

DATETIME

✖️

✖️

TIMESTAMP

✖️

✖️

Konversi ke tipe numerik

Tipe sumber

Konversi implisit ke tipe numerik

BOOLEAN

Tipe integer

FLOAT

DOUBLE

DECIMAL

Skalar dasar

Literal string

✖️

✖️

✖️

✔️

✖️

Literal numerik

✖️

✔️

✔️

✔️

✔️

Numerik

BOOLEAN

/

✖️

✖️

✖️

✖️

Tipe integer

✖️

/

✔️

✔️

✔️

FLOAT

✖️

✔️: Hanya konversi ke BIGINT yang didukung.

/

✔️

✖️

DOUBLE

✖️

✔️: Hanya konversi ke BIGINT yang didukung.

✖️

/

✖️

DECIMAL

✖️

✔️

✔️

✔️

/

String

String reguler

✖️

✖️

✖️

✔️

✖️

String biner

✖️

✖️

✖️

✖️

✖️

Tanggal dan waktu

YEAR

✖️

✔️

✔️

✔️

✔️

DATE

✖️

✖️

✖️

✔️

✖️

TIME

✖️

✖️

✖️

✔️

✖️

DATETIME

✖️

✖️

✖️

✔️

✖️

TIMESTAMP

✖️

✖️

✖️

✔️

✖️

Konversi ke tipe string

Tipe sumber

Konversi implisit ke tipe string

String reguler

String biner

Skalar dasar

String literal

✔️

✖️

Literal numerik

✖️

✖️

Numerik

BOOLEAN

✖️

✖️

Tipe integer

✔️

✖️

FLOAT

✔️

✖️

DOUBLE

✔️

✖️

DECIMAL

✔️

✖️

String

String reguler

/

✖️

String biner

✖️

/

Tanggal dan waktu

YEAR

✔️

✖️

DATE

✔️

✖️

TIME

✔️

✖️

DATETIME

✔️

✖️

TIMESTAMP

✔️

✖️

Konversi ke tipe tanggal dan waktu

Tipe sumber

Konversi implisit ke tipe tanggal dan waktu

YEAR

DATE

TIME

DATETIME

TIMESTAMP

Skalar dasar

Literal string

✖️

✖️

✖️

✖️

✖️

Literal numerik

✔️

✖️

✖️

✖️

✖️

nilai

BOOLEAN

✖️

✖️

✖️

✖️

✖️

Tipe integer

✖️

✖️

✖️

✖️

✖️

FLOAT

✖️

✖️

✖️

✖️

✖️

DOUBLE

✖️

✖️

✖️

✖️

✖️

DECIMAL

✖️

✖️

✖️

✖️

✖️

String

String reguler

✖️

✖️

✖️

✖️

✖️

String biner

✖️

✖️

✖️

✖️

✖️

Tanggal dan waktu

YEAR

/

✖️

✖️

✖️

✖️

DATE

✖️

/

✖️

✔️

✔️

TIME

✖️

✖️

/

✔️

✔️

DATETIME

✖️

✖️

✖️

/

✔️

TIMESTAMP

✖️

✖️

✖️

✔️

/

Aturan untuk konversi tipe implisit dalam perbandingan

Instans analitis berbasis DuckDB menerapkan aturan yang lebih ketat dan konsisten untuk konversi dan perbandingan tipe. Namun, perilaku ini mungkin berbeda dari MySQL dalam beberapa skenario:

  • Konversi implisit dari string ke tanggal: Ketika string dikonversi secara implisit ke tanggal, jika format string tidak dapat diurai menjadi nilai tanggal yang valid, kueri SQL gagal dan melaporkan error.

  • Aturan perbandingan antar tipe integer: Saat tipe integer yang berbeda dibandingkan, instans analitis berbasis DuckDB mengonversinya ke tipe integer dengan rentang nilai lebih besar.

  • Urutan konversi tipe untuk ekspresi multi-operan: Untuk ekspresi multi-operan seperti col1 in (col2, col3, col4, ...), col1 between col2 and col3, coalesce(col1, col2, col3, ...), konversi tipe dilakukan secara berurutan.

  • Perbedaan kompatibilitas untuk tipe YEAR: Dalam instans analitis berbasis DuckDB, tipe YEAR dikonversi ke tipe INTEGER untuk perbandingan, yang dapat menyebabkan ketidakkompatibilitas dengan MySQL. Contoh:

    CREATE TABLE t1 (id YEAR PRIMARY KEY);
    INSERT INTO t1 VALUES (1980);
    SELECT * FROM t1 WHERE id BETWEEN 70 AND 90;
    
    # Hasil kueri MySQL
    +------+
    | id   |
    +------+
    | 1980 |
    +------+
    
    # Hasil kueri instans analitis berbasis DuckDB
    Empty set.
  • Aturan konversi string untuk tipe Boolean: Instans analitis berbasis DuckDB mendukung konversi enam string ('1', '0', 'yes', 'no', 'true', dan 'false') ke tipe BOOLEAN. Upaya mengonversi string lainnya menghasilkan error. Sebaliknya, MySQL mengonversi '1' ke true dan semua string lainnya ke false. Oleh karena itu, pernyataan SQL berikut mungkin menghasilkan hasil yang tidak konsisten:

    CREATE TABLE t1 (id INT PRIMARY KEY);
    INSERT INTO t1 VALUES (1);
    SELECT id FROM t1 WHERE 'true';
    
    # Hasil kueri MySQL
    Empty set
    
    # Hasil kueri instans analitis berbasis DuckDB
    +------+
    | id   |
    +------+
    |    1 |
    +------+

Catatan
  • Ketika data dengan tipe berbeda dibandingkan, sistem mengonversi data tersebut ke tipe umum untuk perbandingan berdasarkan aturan dalam tabel berikut. Jika perbandingan antar tipe tidak didukung (✖️), error dilaporkan.

  • Tipe string reguler mengacu pada tipe data MySQL berikut: CHAR, VARCHAR, TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT, JSON, SET, dan ENUM.

  • Tipe string biner mengacu pada tipe data MySQL berikut: BINARY, VARBINARY, BIT, TINYBLOB, BLOB, MEDIUMBLOB, dan LONGBLOB.

Perbandingan dengan tipe skalar dasar

Tipe sumber

Perbandingan dengan tipe skalar dasar

Literal string

Literal numerik

Skalar dasar

Literal string

String

Literal numerik

Literal numerik

Literal numerik

Tipe numerik dengan rentang lebih besar

Nilai

BOOLEAN

BOOLEAN

Tipe numerik dengan rentang lebih besar

Tipe integer

Tipe integer

Tipe numerik dengan rentang lebih besar

FLOAT

FLOAT

Tipe numerik dengan rentang lebih besar

DOUBLE

DOUBLE

Tipe numerik dengan rentang lebih besar

DECIMAL

DECIMAL

Tipe numerik dengan rentang lebih besar

String

String reguler

String reguler

Literal numerik

String biner

String biner

✖️

Tanggal dan waktu

YEAR

YEAR

Tipe numerik dengan rentang lebih besar

DATE

DATETIME

✖️

TIME

TIME

✖️

DATETIME

DATETIME

✖️

TIMESTAMP

TIMESTAMP

✖️

Perbandingan dengan tipe numerik

Tipe sumber

Perbandingan dengan tipe numerik

BOOLEAN

Tipe integer

FLOAT

DOUBLE

DECIMAL

Skalar dasar

Literal string

BOOLEAN

Tipe integer

FLOAT

DOUBLE

DECIMAL

Literal numerik

Tipe numerik dengan rentang lebih besar

Tipe numerik dengan rentang lebih besar

Tipe numerik dengan rentang lebih besar

Tipe numerik dengan rentang lebih besar

Tipe numerik dengan rentang lebih besar

Numerik

BOOLEAN

BOOLEAN

Tipe integer

FLOAT (perbandingan ketidaksamaan ✖️)

DOUBLE (perbandingan ketidaksamaan ✖️)

DECIMAL (perbandingan ketidaksamaan ✖️)

Tipe integer

Tipe integer

Tipe integer

FLOAT

DOUBLE

DECIMAL

FLOAT

FLOAT (perbandingan ketidaksamaan ✖️)

FLOAT

FLOAT

DOUBLE

FLOAT

DOUBLE

DOUBLE (perbandingan ketidaksamaan ✖️)

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DECIMAL

DECIMAL (perbandingan ketidaksamaan ✖️)

DECIMAL

FLOAT

DOUBLE

DECIMAL

String

String reguler

BOOLEAN

Tipe integer

FLOAT

DOUBLE

DECIMAL

String biner

✖️

✖️

✖️

✖️

✖️

Tanggal dan waktu

YEAR

INTEGER

Tipe integer dengan rentang lebih besar

FLOAT

DOUBLE

DECIMAL

DATE

✖️

✖️

✖️

DOUBLE

✖️

TIME

✖️

✖️

✖️

DOUBLE

✖️

DATETIME

✖️

✖️

✖️

DOUBLE

✖️

TIMESTAMP

✖️

✖️

✖️

DOUBLE

✖️

Perbandingan dengan tipe string

Tipe sumber

Perbandingan dengan tipe string

String reguler

String biner

Skalar dasar

Literal string

String reguler

String biner

Literal numerik

Literal numerik

✖️

Numerik

BOOLEAN

BOOLEAN

✖️

Tipe integer

Tipe integer

✖️

FLOAT

FLOAT

✖️

DOUBLE

DOUBLE

✖️

DECIMAL

DECIMAL

✖️

String

String reguler

String reguler

String biner

String biner

String biner

String biner

Tanggal dan waktu

YEAR

INTEGER

✖️

DATE

DATE

✖️

TIME

TIME

✖️

DATETIME

DATETIME

✖️

TIMESTAMP

TIMESTAMP

✖️

Perbandingan dengan tipe tanggal dan waktu

Tipe sumber

Perbandingan dengan tipe tanggal dan waktu

YEAR

DATE

TIME

DATETIME

TIMESTAMP

Skalar dasar

String literal

YEAR

DATETIME

TIME

DATETIME

TIMESTAMP

Literal numerik

Tipe numerik dengan rentang lebih besar

✖️

✖️

✖️

✖️

Numerik

BOOLEAN

INTEGER

✖️

✖️

✖️

✖️

Tipe integer

Tipe integer dengan rentang lebih besar

✖️

✖️

✖️

✖️

FLOAT

FLOAT

✖️

✖️

✖️

✖️

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DECIMAL

DECIMAL

✖️

✖️

✖️

✖️

String

String reguler

INTEGER

DATE

TIME

DATETIME

TIMESTAMP

String biner

✖️

✖️

✖️

✖️

✖️

Tanggal dan waktu

YEAR

INTEGER

✖️

✖️

✖️

✖️

DATE

✖️

DATE

✖️

DATETIME

TIMESTAMP

TIME

✖️

✖️

TIME

✖️

✖️

DATETIME

✖️

DATETIME

✖️

DATETIME

DATETIME

TIMESTAMP

✖️

TIMESTAMP

✖️

DATETIME

TIMESTAMP

Potensi ketidakonsistenan dalam hasil kueri

Operasi numerik

  • Perbandingan bilangan titik mengambang mungkin tidak kompatibel. Contoh:

    CREATE TABLE t1 (id FLOAT PRIMARY KEY);
    INSERT INTO t1 VALUES (1.22), (1.23), (1.24);
    SELECT * FROM t1 WHERE t1.id > 1.23;
    
    # Hasil kueri MySQL
    +------+
    | id   |
    +------+
    | 1.23 |
    | 1.24 |
    +------+
    
    # Hasil kueri instans analitis berbasis DuckDB
    +------+
    | id   |
    +------+
    | 1.24 |
    +------+
  • Hasil operasi kompleks pada bilangan titik mengambang mungkin tidak konsisten akibat error titik mengambang.

  • Ketika operasi dilakukan antara tipe integer dan DECIMAL, hasilnya tidak boleh melebihi rentang nilai tipe tersebut. Jika tidak, error overflow dapat menyebabkan eksekusi gagal.

    CREATE TABLE t1 (id TINYINT PRIMARY KEY);
    INSERT INTO t1 VALUES (100);
    SELECT id * 2 FROM t1;
    
    # Hasil kueri MySQL
    +--------+
    | id * 2 |
    +--------+
    |    200 |
    +--------+
    
    # Hasil kueri instans analitis berbasis DuckDB
    ERROR 7577 (HY000): [DuckDB] Out of Range Error: Overflow in multiplication of INT8 (100 * 2)!.

Hasil tidak konsisten akibat aturan collation

Collation seri utf8mb4_0900_xx tidak kompatibel saat membandingkan karakter simbol tertentu. Contohnya:

CREATE TABLE t1 ( id varchar(20) COLLATE utf8mb4_0900_ai_ci PRIMARY KEY );
INSERT INTO t1 VALUES ('!'), ('_');
SELECT * FROM t1 ORDER BY id;

# Hasil kueri MySQL
+----+
| id |
+----+
| _  |
| !  |
+----+

# Hasil kueri instans analitis berbasis DuckDB
+----+
| id |
+----+
| !  |
| _  |
+----+

Penanganan nilai NULL dalam subkueri vektor dengan IN

Dalam instans analitis berbasis DuckDB, penanganan nilai NULL dalam subkueri vektor dengan IN mungkin tidak kompatibel dengan MySQL. Contoh:

CREATE TABLE t1 (id INT PRIMARY KEY, col1 INT);
INSERT INTO t1 VALUES (1, 1), (2, 2);
CREATE TABLE t2 (id INT PRIMARY KEY, col1 INT);
INSERT INTO t2 VALUES (1, NULL);

select (id, col1) in (select id, col1 from t2) from t1;

# Hasil kueri MySQL
+-----------------------------------------+
| (id, col1) in (select id, col1 from t2) |
+-----------------------------------------+
|                                    NULL |
|                                       0 |
+-----------------------------------------+

# Hasil kueri instans analitis berbasis DuckDB
+-----------------------------------------+
| (id, col1) in (select id, col1 from t2) |
+-----------------------------------------+
|                                    NULL |
|                                    NULL |
+-----------------------------------------+

Untuk data (2, 2), tidak ada item yang sesuai untuk awalan vektor dalam klausa IN. Dalam kasus ini, MySQL mengembalikan 0, sedangkan instans analitis berbasis DuckDB mengembalikan NULL.

Batasan pada fungsi

Tabel berikut mencantumkan hanya fungsi yang perilakunya berbeda antara instans analitis berbasis DuckDB dan MySQL.

Fungsi agregat

Nama fungsi

Didukung

Batasan

BIT_AND

Ya

Tipe string, DECIMAL, dan tanggal tidak didukung.

BIT_OR

Ya

Tipe string, DECIMAL, dan tanggal tidak didukung.

BIT_XOR

Ya

Tipe string, DECIMAL, dan tanggal tidak didukung.

JSON_ARRAYAGG

Tidak

/

Fungsi numerik

Fungsi numerik tidak mendukung tipe BOOLEAN.

Nama fungsi

Didukung

Batasan

CONV()

Tidak

/

CRC32()

Tidak

/

TRUNCATE()

Tidak

/

Fungsi string

MySQL DuckDB secara ketat membedakan antara string biner (seperti BLOB dan VARBINARY) dan string (seperti VARCHAR, TEXT, dan JSON). Oleh karena itu, batasan penggunaan berikut untuk fungsi string hanya berlaku untuk input string, bukan input string biner. Beberapa fungsi yang dapat menerima string biner sebagai input meliputi: CONCAT(), CONCAT_WS(), LENGTH(), MID(), OCTET_LENGTH(), REPEAT(), dan TO_BASE64(). Kecuali dinyatakan lain, fungsi-fungsi ini tidak memiliki batasan penggunaan.

Nama fungsi

Didukung

Batasan

BIN()

Ya

Di MySQL, BIN('') mengembalikan NULL, sedangkan instans analitis berbasis DuckDB mengembalikan '0'.

CHAR()

Tidak

/

ELT()

Tidak

/

EXPORT_SET()

Tidak

/

FIND_IN_SET()

Ya

Parameter pertama fungsi ini harus bertipe string. Tipe non-string dapat menghasilkan hasil yang tidak konsisten dengan MySQL.

FORMAT()

Tidak

/

FROM_BASE64()

Ya

Fungsi ini melaporkan error jika dekode base64 gagal.

LIKE

Ya

LIKE tidak dipengaruhi oleh aturan collation.

LOAD_FILE()

Tidak

/

MAKE_SET()

Tidak

/

MATCH()

Tidak

/

NOT LIKE

Ya

NOT LIKE tidak dipengaruhi oleh aturan collation.

OCT()

Ya

Di MySQL, OCT('') mengembalikan NULL, sedangkan instans analitis berbasis DuckDB mengembalikan '0'.

QUOTE()

Tidak

/

SOUNDEX()

Tidak

/

SOUND LIKE

Tidak

/

UNHEX()

Ya

Error dilaporkan jika fungsi menemukan digit non-heksadesimal.

WEIGHT_STRING()

Tidak

/

Fungsi tanggal

Nama fungsi

Didukung

Batasan

ADDTIME()

Ya

Jika nilai kembali melebihi rentang nilai data tipe waktu untuk instans analitis berbasis DuckDB, hasil yang tidak konsisten akan terjadi.

DATE_FORMAT()

Ya

%X, %V, dan %u tidak didukung.

GET_FORMAT()

Tidak

/

PERIOD_ADD()

Ya

Tahun lebih dari 9999 tidak didukung.

PERIOD_DIFF()

Ya

Tahun lebih dari 9999 tidak didukung.

SEC_TO_TIME()

Ya

Jika nilai kembali melebihi rentang nilai tipe data waktu untuk instans analitis berbasis DuckDB, hasil yang tidak konsisten mungkin terjadi.

STR_TO_DATE()

Ya

  • %X, %V, dan %u tidak didukung.

  • Jika format specifier tidak cocok dengan benar, NULL dikembalikan.

SUBTIME()

Ya

Jika nilai kembali berada di luar rentang nilai data tipe waktu untuk instans analitis berbasis DuckDB, hasil yang tidak konsisten mungkin terjadi.

TIME_TO_SEC()

Ya

Format DAY TIME tidak didukung. Contohnya: select time_to_sec('1 12:00:00');.

TIMEDIFF()

Tidak

/

Fungsi JSON

Nama fungsi

Didukung?

Batasan

JSON_ARRAY_APPEND()

Tidak

/

JSON_ARRAY_INSERT()

Tidak

/

JSON_INSERT()

Tidak

/

JSON_MERGE()

Tidak

/

JSON_MERGE_PATCH()

Ya

Urutan field dalam objek JSON yang digabungkan mungkin berbeda dari MySQL.

JSON_MERGE_PRESERVE()

Tidak

/

JSON_REMOVE()

Tidak

/

JSON_REPLACE()

Tidak

/

JSON_SCHEMA_VALID()

Tidak

/

JSON_SCHEMA_VALIDATION_REPORT()

Tidak

/

JSON_SEARCH()

Tidak

/

JSON_SET()

Tidak

/

JSON_STORAGE_FREE()

Tidak

/

JSON_STORAGE_SIZE()

Tidak

/

JSON_TABLE()

Tidak

/

JSON_TYPE()

Tidak

/

Fungsi window

Nama fungsi

Didukung

Batasan

JSON_ARRAYAGG

Tidak

/

JSON_OBJECTAGG

Tidak

/