diff --git a/src/postgres_deparse.c b/src/postgres_deparse.c index d4d8237a..9e0cabc2 100644 --- a/src/postgres_deparse.c +++ b/src/postgres_deparse.c @@ -4639,6 +4639,7 @@ static void deparseAIndirection(DeparseState *state, A_Indirection *a_indirectio IsA(a_indirection->arg, A_Expr) || IsA(a_indirection->arg, TypeCast) || IsA(a_indirection->arg, RowExpr) || + IsA(a_indirection->arg, A_ArrayExpr) || (IsA(a_indirection->arg, ColumnRef) && !IsA(linitial(a_indirection->indirection), A_Indices)) || IsA(a_indirection->arg, JsonFuncExpr); diff --git a/test/deparse_tests.c b/test/deparse_tests.c index 2fb9c0cc..86b410bd 100644 --- a/test/deparse_tests.c +++ b/test/deparse_tests.c @@ -55,6 +55,7 @@ const char* tests[] = { "SELECT * FROM x WHERE id NOT IN (1, 2, 3)", "SELECT * FROM x JOIN (SELECT n FROM z) b ON a.id = b.id", "SELECT * FROM x WHERE y = z[5]", + "SELECT (ARRAY['a', 'b'])[1]", "SELECT (foo(1)).y", "SELECT proname, (SELECT regexp_split_to_array(proargtypes::text, ' '))[idx] AS argtype, proargnames[idx] AS argname FROM pg_proc", "SELECT COALESCE((SELECT customer.sp_person(n.id) AS sp_person).city_id, NULL::int) AS city_id FROM customer.tb_customer n",