From 03892bc20588fbdd359164dc3b2a069dd25004ea Mon Sep 17 00:00:00 2001 From: psteinroe Date: Fri, 13 Feb 2026 11:34:43 +0100 Subject: [PATCH] initial --- .../src/nodes/alter_function_stmt.rs | 4 +- .../src/nodes/create_function_stmt.rs | 52 +- crates/pgls_pretty_print/src/normalize.rs | 53 ++ .../multi/tests__aggregates_100.snap | 30 +- .../snapshots/multi/tests__aggregates_80.snap | 30 +- .../multi/tests__alter_generic_100.snap | 20 +- .../multi/tests__alter_generic_80.snap | 20 +- .../multi/tests__alter_operator_100.snap | 26 +- .../multi/tests__alter_operator_80.snap | 26 +- .../multi/tests__alter_table_100.snap | 2 +- .../multi/tests__alter_table_80.snap | 2 +- .../snapshots/multi/tests__arrays_100.snap | 12 +- .../snapshots/multi/tests__arrays_80.snap | 12 +- .../snapshots/multi/tests__case_100.snap | 26 +- .../tests/snapshots/multi/tests__case_80.snap | 26 +- .../multi/tests__collate.icu.utf8_100.snap | 4 +- .../multi/tests__collate.icu.utf8_80.snap | 4 +- .../multi/tests__collate.linux.utf8_100.snap | 4 +- .../multi/tests__collate.linux.utf8_80.snap | 4 +- .../snapshots/multi/tests__collate_100.snap | 4 +- .../snapshots/multi/tests__collate_80.snap | 4 +- .../multi/tests__conversion_100.snap | 9 +- .../snapshots/multi/tests__conversion_80.snap | 9 +- .../snapshots/multi/tests__copy2_100.snap | 8 +- .../snapshots/multi/tests__copy2_80.snap | 8 +- .../snapshots/multi/tests__copy_100.snap | 5 +- .../tests/snapshots/multi/tests__copy_80.snap | 5 +- .../snapshots/multi/tests__copydml_100.snap | 5 +- .../snapshots/multi/tests__copydml_80.snap | 5 +- .../multi/tests__create_aggregate_100.snap | 38 +- .../multi/tests__create_aggregate_80.snap | 38 +- .../multi/tests__create_cast_100.snap | 16 +- .../multi/tests__create_cast_80.snap | 16 +- .../multi/tests__create_function_sql_100.snap | 6 +- .../multi/tests__create_function_sql_80.snap | 6 +- .../multi/tests__create_index_100.snap | 10 +- .../multi/tests__create_index_80.snap | 10 +- .../multi/tests__create_operator_100.snap | 30 +- .../multi/tests__create_operator_80.snap | 30 +- .../multi/tests__create_table_100.snap | 20 +- .../multi/tests__create_table_80.snap | 20 +- .../multi/tests__create_type_100.snap | 98 +- .../multi/tests__create_type_80.snap | 98 +- .../multi/tests__create_view_100.snap | 10 +- .../multi/tests__create_view_80.snap | 10 +- .../snapshots/multi/tests__domain_100.snap | 44 +- .../snapshots/multi/tests__domain_80.snap | 44 +- .../multi/tests__drop_if_exists_100.snap | 16 +- .../multi/tests__drop_if_exists_80.snap | 16 +- .../snapshots/multi/tests__enum_100.snap | 9 +- .../tests/snapshots/multi/tests__enum_80.snap | 9 +- .../multi/tests__equivclass_100.snap | 44 +- .../snapshots/multi/tests__equivclass_80.snap | 44 +- .../multi/tests__event_trigger_100.snap | 36 +- .../multi/tests__event_trigger_80.snap | 36 +- .../multi/tests__event_trigger_login_100.snap | 5 +- .../multi/tests__event_trigger_login_80.snap | 5 +- .../multi/tests__expressions_100.snap | 36 +- .../multi/tests__expressions_80.snap | 36 +- .../multi/tests__fast_default_100.snap | 18 +- .../multi/tests__fast_default_80.snap | 18 +- .../snapshots/multi/tests__float4_100.snap | 4 +- .../snapshots/multi/tests__float4_80.snap | 4 +- .../snapshots/multi/tests__float8_100.snap | 4 +- .../snapshots/multi/tests__float8_80.snap | 4 +- .../multi/tests__foreign_data_100.snap | 8 +- .../multi/tests__foreign_data_80.snap | 8 +- .../multi/tests__generated_stored_100.snap | 6 +- .../multi/tests__generated_stored_80.snap | 6 +- .../multi/tests__generated_virtual_100.snap | 6 +- .../multi/tests__generated_virtual_80.snap | 6 +- .../multi/tests__groupingsets_100.snap | 4 +- .../multi/tests__groupingsets_80.snap | 4 +- .../snapshots/multi/tests__indexing_100.snap | 6 +- .../snapshots/multi/tests__indexing_80.snap | 6 +- .../multi/tests__indirect_toast_100.snap | 6 +- .../multi/tests__indirect_toast_80.snap | 6 +- .../multi/tests__infinite_recurse_100.snap | 4 +- .../multi/tests__infinite_recurse_80.snap | 4 +- .../snapshots/multi/tests__inherit_100.snap | 8 +- .../snapshots/multi/tests__inherit_80.snap | 8 +- .../snapshots/multi/tests__insert_100.snap | 16 +- .../snapshots/multi/tests__insert_80.snap | 16 +- .../multi/tests__insert_conflict_100.snap | 5 +- .../multi/tests__insert_conflict_80.snap | 5 +- .../snapshots/multi/tests__interval_100.snap | 5 +- .../snapshots/multi/tests__interval_80.snap | 5 +- .../snapshots/multi/tests__lock_100.snap | 4 +- .../tests/snapshots/multi/tests__lock_80.snap | 4 +- .../snapshots/multi/tests__merge_100.snap | 4 +- .../snapshots/multi/tests__merge_80.snap | 4 +- .../snapshots/multi/tests__misc_100.snap | 56 +- .../tests/snapshots/multi/tests__misc_80.snap | 56 +- .../multi/tests__misc_functions_100.snap | 24 +- .../multi/tests__misc_functions_80.snap | 24 +- .../multi/tests__multirangetypes_100.snap | 72 +- .../multi/tests__multirangetypes_80.snap | 72 +- .../snapshots/multi/tests__namespace_100.snap | 2 +- .../snapshots/multi/tests__namespace_80.snap | 2 +- .../multi/tests__partition_prune_100.snap | 12 +- .../multi/tests__partition_prune_80.snap | 12 +- .../snapshots/multi/tests__plancache_100.snap | 12 +- .../snapshots/multi/tests__plancache_80.snap | 12 +- .../snapshots/multi/tests__plpgsql_100.snap | 894 +++++++++--------- .../snapshots/multi/tests__plpgsql_80.snap | 894 +++++++++--------- .../multi/tests__polymorphism_100.snap | 330 +++---- .../multi/tests__polymorphism_80.snap | 330 +++---- .../multi/tests__privileges_100.snap | 76 +- .../snapshots/multi/tests__privileges_80.snap | 76 +- .../multi/tests__publication_100.snap | 8 +- .../multi/tests__publication_80.snap | 8 +- .../snapshots/multi/tests__random_100.snap | 21 +- .../snapshots/multi/tests__random_80.snap | 21 +- .../multi/tests__rangefuncs_100.snap | 234 ++--- .../snapshots/multi/tests__rangefuncs_80.snap | 234 ++--- .../multi/tests__rangetypes_100.snap | 60 +- .../snapshots/multi/tests__rangetypes_80.snap | 60 +- .../snapshots/multi/tests__returning_100.snap | 12 +- .../snapshots/multi/tests__returning_80.snap | 12 +- .../multi/tests__rowsecurity_100.snap | 2 +- .../multi/tests__rowsecurity_80.snap | 2 +- .../snapshots/multi/tests__rowtypes_100.snap | 24 +- .../snapshots/multi/tests__rowtypes_80.snap | 24 +- .../multi/tests__security_label_100.snap | 4 +- .../multi/tests__security_label_80.snap | 4 +- .../snapshots/multi/tests__select_100.snap | 6 +- .../snapshots/multi/tests__select_80.snap | 6 +- .../multi/tests__select_distinct_100.snap | 12 +- .../multi/tests__select_distinct_80.snap | 12 +- .../multi/tests__select_into_100.snap | 4 +- .../multi/tests__select_into_80.snap | 4 +- .../multi/tests__select_parallel_100.snap | 48 +- .../multi/tests__select_parallel_80.snap | 48 +- .../snapshots/multi/tests__sqljson_100.snap | 6 +- .../snapshots/multi/tests__sqljson_80.snap | 6 +- .../multi/tests__sqljson_queryfuncs_100.snap | 7 +- .../multi/tests__sqljson_queryfuncs_80.snap | 7 +- .../snapshots/multi/tests__stats_100.snap | 4 +- .../snapshots/multi/tests__stats_80.snap | 4 +- .../snapshots/multi/tests__stats_ext_100.snap | 20 +- .../snapshots/multi/tests__stats_ext_80.snap | 20 +- .../multi/tests__subscription_100.snap | 4 +- .../multi/tests__subscription_80.snap | 4 +- .../snapshots/multi/tests__subselect_100.snap | 2 +- .../snapshots/multi/tests__subselect_80.snap | 2 +- .../snapshots/multi/tests__temp_100.snap | 16 +- .../tests/snapshots/multi/tests__temp_80.snap | 16 +- .../multi/tests__test_setup_100.snap | 38 +- .../snapshots/multi/tests__test_setup_80.snap | 38 +- .../multi/tests__transactions_100.snap | 26 +- .../multi/tests__transactions_80.snap | 26 +- .../snapshots/multi/tests__triggers_100.snap | 68 +- .../snapshots/multi/tests__triggers_80.snap | 68 +- .../snapshots/multi/tests__truncate_100.snap | 4 +- .../snapshots/multi/tests__truncate_80.snap | 4 +- .../multi/tests__type_sanity_100.snap | 5 +- .../multi/tests__type_sanity_80.snap | 5 +- .../multi/tests__updatable_views_100.snap | 40 +- .../multi/tests__updatable_views_80.snap | 40 +- .../snapshots/multi/tests__update_100.snap | 22 +- .../snapshots/multi/tests__update_80.snap | 22 +- .../snapshots/multi/tests__vacuum_100.snap | 4 +- .../snapshots/multi/tests__vacuum_80.snap | 4 +- .../snapshots/multi/tests__window_100.snap | 54 +- .../snapshots/multi/tests__window_80.snap | 54 +- .../tests__create_function_stmt_0_100.snap | 4 +- .../tests__create_function_stmt_0_80.snap | 4 +- 167 files changed, 3014 insertions(+), 2931 deletions(-) diff --git a/crates/pgls_pretty_print/src/nodes/alter_function_stmt.rs b/crates/pgls_pretty_print/src/nodes/alter_function_stmt.rs index 5b289bf8b..a1b594c5f 100644 --- a/crates/pgls_pretty_print/src/nodes/alter_function_stmt.rs +++ b/crates/pgls_pretty_print/src/nodes/alter_function_stmt.rs @@ -36,9 +36,11 @@ pub(super) fn emit_alter_function_stmt(e: &mut EventEmitter, n: &AlterFunctionSt }; // Emit actions (function options like IMMUTABLE, SECURITY DEFINER, etc.) + // Sort according to Postgres's canonical order if !n.actions.is_empty() { e.line(LineType::SoftOrSpace); - emit_comma_separated_list(e, &n.actions, |node, e| { + let sorted_actions = super::create_function_stmt::sort_function_options(&n.actions); + emit_comma_separated_list(e, &sorted_actions, |node, e| { let def_elem = assert_node_variant!(DefElem, node); super::create_function_stmt::format_function_option(e, def_elem, dollar_hint); }); diff --git a/crates/pgls_pretty_print/src/nodes/create_function_stmt.rs b/crates/pgls_pretty_print/src/nodes/create_function_stmt.rs index edb1adfbf..00f01acd3 100644 --- a/crates/pgls_pretty_print/src/nodes/create_function_stmt.rs +++ b/crates/pgls_pretty_print/src/nodes/create_function_stmt.rs @@ -90,8 +90,9 @@ pub(super) fn emit_create_function_stmt(e: &mut EventEmitter, n: &CreateFunction super::DollarQuoteHint::Function }; - // Options - for option in &n.options { + // Options - sort according to Postgres's canonical order + let sorted_options = sort_function_options(&n.options); + for option in sorted_options { if let Some(pgls_query::NodeEnum::DefElem(def_elem)) = &option.node { e.line(LineType::Hard); format_function_option(e, def_elem, dollar_hint); @@ -183,6 +184,53 @@ fn emit_function_parameter_list(e: &mut EventEmitter, params: &[&FunctionParamet } } +/// Returns the canonical order for a function option. +/// Postgres's canonical order (as seen in pg_dump output) is: +/// 1. LANGUAGE +/// 2. WINDOW +/// 3. IMMUTABLE / STABLE / VOLATILE (volatility) +/// 4. LEAKPROOF / NOT LEAKPROOF +/// 5. STRICT / CALLED ON NULL INPUT (strict) +/// 6. SECURITY DEFINER / SECURITY INVOKER (security) +/// 7. PARALLEL (parallel) +/// 8. COST (cost) +/// 9. ROWS (rows) +/// 10. SUPPORT (support) +/// 11. SET options (set) +/// 12. AS (function body) +fn option_order(defname: &str) -> usize { + match defname.to_lowercase().as_str() { + "language" => 0, + "window" => 1, + "volatility" => 2, + "leakproof" => 3, + "strict" => 4, + "security" => 5, + "parallel" => 6, + "cost" => 7, + "rows" => 8, + "support" => 9, + "set" => 10, + "as" => 11, + _ => 100, // Unknown options go last + } +} + +/// Sort function options according to Postgres's canonical order. +pub(super) fn sort_function_options( + options: &[pgls_query::protobuf::Node], +) -> Vec { + let mut sorted: Vec = options.to_vec(); + sorted.sort_by_key(|node| { + if let Some(pgls_query::NodeEnum::DefElem(def_elem)) = &node.node { + option_order(&def_elem.defname) + } else { + 100 // Non-DefElem nodes go last + } + }); + sorted +} + pub(super) fn format_function_option( e: &mut EventEmitter, d: &pgls_query::protobuf::DefElem, diff --git a/crates/pgls_pretty_print/src/normalize.rs b/crates/pgls_pretty_print/src/normalize.rs index 04a195068..1e11005d0 100644 --- a/crates/pgls_pretty_print/src/normalize.rs +++ b/crates/pgls_pretty_print/src/normalize.rs @@ -1205,14 +1205,63 @@ fn sql_value_to_func_call( }) } +/// Returns the canonical order for a function option. +/// Postgres's canonical order (as seen in pg_dump output) is: +/// 1. LANGUAGE +/// 2. WINDOW +/// 3. IMMUTABLE / STABLE / VOLATILE (volatility) +/// 4. LEAKPROOF / NOT LEAKPROOF +/// 5. STRICT / CALLED ON NULL INPUT (strict) +/// 6. SECURITY DEFINER / SECURITY INVOKER (security) +/// 7. PARALLEL (parallel) +/// 8. COST (cost) +/// 9. ROWS (rows) +/// 10. SUPPORT (support) +/// 11. SET options (set) +/// 12. AS (function body) +fn option_order(defname: &str) -> usize { + match defname.to_lowercase().as_str() { + "language" => 0, + "window" => 1, + "volatility" => 2, + "leakproof" => 3, + "strict" => 4, + "security" => 5, + "parallel" => 6, + "cost" => 7, + "rows" => 8, + "support" => 9, + "set" => 10, + "as" => 11, + _ => 100, // Unknown options go last + } +} + +/// Sort function options according to Postgres's canonical order. +fn sort_function_options(options: &mut [pgls_query::protobuf::Node]) { + options.sort_by_key(|node| { + if let Some(NodeEnum::DefElem(def_elem)) = &node.node { + option_order(&def_elem.defname) + } else { + 100 // Non-DefElem nodes go last + } + }); +} + /// Normalize function body strings by trimming whitespace. /// /// The formatter emits function bodies on separate lines from the dollar-quote delimiters, /// which adds leading/trailing newlines to the body. This normalization trims these /// so that semantically equivalent bodies compare equal. +/// +/// Also sorts function options to canonical order so that semantically equivalent +/// option orderings compare equal. fn normalize_function_body(node: &mut NodeEnum) { match node { NodeEnum::CreateFunctionStmt(stmt) => { + // Sort options to canonical order + sort_function_options(&mut stmt.options); + for opt in &mut stmt.options { if let Some(NodeEnum::DefElem(def)) = opt.node.as_mut() && def.defname.eq_ignore_ascii_case("as") @@ -1242,6 +1291,10 @@ fn normalize_function_body(node: &mut NodeEnum) { NodeEnum::InlineCodeBlock(block) => { block.source_text = block.source_text.trim().to_string(); } + NodeEnum::AlterFunctionStmt(stmt) => { + // Sort actions to canonical order + sort_function_options(&mut stmt.actions); + } _ => {} } } diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__aggregates_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__aggregates_100.snap index 0a81de271..e201e4bf1 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__aggregates_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__aggregates_100.snap @@ -1791,6 +1791,7 @@ create type avg_state as (total bigint, count bigint); create or replace function avg_transfn(state avg_state, n int) returns avg_state +language plpgsql as $function$ declare new_state avg_state; begin @@ -1810,11 +1811,11 @@ begin return null; end -$function$ -language plpgsql; +$function$; create function avg_finalfn(state avg_state) returns int +language plpgsql as $function$ begin if state is null then @@ -1823,11 +1824,11 @@ begin return state.total / state.count; end if; end -$function$ -language plpgsql; +$function$; create function sum_finalfn(state avg_state) returns int +language plpgsql as $function$ begin if state is null then @@ -1836,8 +1837,7 @@ begin return state.total; end if; end -$function$ -language plpgsql; +$function$; create aggregate my_avg (int) (stype = avg_state, sfunc = avg_transfn, finalfunc = avg_finalfn); @@ -1924,6 +1924,7 @@ begin; create or replace function sum_transfn(state int, n int) returns int +language plpgsql as $function$ declare new_state int4; begin @@ -1941,11 +1942,11 @@ begin return null; end -$function$ -language plpgsql; +$function$; create function halfsum_finalfn(state int) returns int +language plpgsql as $function$ begin if state is null then @@ -1954,8 +1955,7 @@ begin return state / 2; end if; end -$function$ -language plpgsql; +$function$; create aggregate my_sum (int) (stype = int, sfunc = sum_transfn); @@ -1969,8 +1969,8 @@ begin; create function balkifnull(bigint, int) returns bigint -strict language plpgsql +strict as $function$ BEGIN IF $1 IS NULL THEN @@ -2136,9 +2136,9 @@ begin; create function balkifnull(bigint, bigint) returns bigint -parallel SAFE -strict language plpgsql +strict +parallel SAFE as $function$ BEGIN IF $1 IS NULL THEN @@ -2186,8 +2186,8 @@ $function$; create function rwagg_finalfunc(x anyarray) returns anyarray language plpgsql -strict immutable +strict as $function$ DECLARE res x%TYPE; @@ -2209,8 +2209,8 @@ create aggregate rwagg ( create function eatarray(x real[]) returns real[] language plpgsql -strict immutable +strict as $function$ BEGIN x[1] := x[1] + 1; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__aggregates_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__aggregates_80.snap index b3c9ce409..23242e3fb 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__aggregates_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__aggregates_80.snap @@ -2151,6 +2151,7 @@ create type avg_state as (total bigint, count bigint); create or replace function avg_transfn(state avg_state, n int) returns avg_state +language plpgsql as $function$ declare new_state avg_state; begin @@ -2170,11 +2171,11 @@ begin return null; end -$function$ -language plpgsql; +$function$; create function avg_finalfn(state avg_state) returns int +language plpgsql as $function$ begin if state is null then @@ -2183,11 +2184,11 @@ begin return state.total / state.count; end if; end -$function$ -language plpgsql; +$function$; create function sum_finalfn(state avg_state) returns int +language plpgsql as $function$ begin if state is null then @@ -2196,8 +2197,7 @@ begin return state.total; end if; end -$function$ -language plpgsql; +$function$; create aggregate my_avg ( int @@ -2316,6 +2316,7 @@ begin; create or replace function sum_transfn(state int, n int) returns int +language plpgsql as $function$ declare new_state int4; begin @@ -2333,11 +2334,11 @@ begin return null; end -$function$ -language plpgsql; +$function$; create function halfsum_finalfn(state int) returns int +language plpgsql as $function$ begin if state is null then @@ -2346,8 +2347,7 @@ begin return state / 2; end if; end -$function$ -language plpgsql; +$function$; create aggregate my_sum (int) (stype = int, sfunc = sum_transfn); @@ -2371,8 +2371,8 @@ begin; create function balkifnull(bigint, int) returns bigint -strict language plpgsql +strict as $function$ BEGIN IF $1 IS NULL THEN @@ -2558,9 +2558,9 @@ begin; create function balkifnull(bigint, bigint) returns bigint -parallel SAFE -strict language plpgsql +strict +parallel SAFE as $function$ BEGIN IF $1 IS NULL THEN @@ -2608,8 +2608,8 @@ $function$; create function rwagg_finalfunc(x anyarray) returns anyarray language plpgsql -strict immutable +strict as $function$ DECLARE res x%TYPE; @@ -2631,8 +2631,8 @@ create aggregate rwagg ( create function eatarray(x real[]) returns real[] language plpgsql -strict immutable +strict as $function$ BEGIN x[1] := x[1] + 1; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__alter_generic_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__alter_generic_100.snap index 488d8809f..6af80f118 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__alter_generic_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__alter_generic_100.snap @@ -4,8 +4,8 @@ input_file: crates/pgls_pretty_print/tests/data/multi/alter_generic.sql --- create function test_opclass_options_func(internal) returns void -as 'regresslib', 'test_opclass_options_func' -language c; +language c +as 'regresslib', 'test_opclass_options_func'; set client_min_messages = warning; @@ -526,10 +526,10 @@ create operator family alt_opf12 using btree; create function fn_opf12(int, smallint) returns bigint +language sql as $function$ SELECT NULL::BIGINT; -$function$ -language sql; +$function$; alter operator family alt_opf12 using btree add function 1 fn_opf12(int, smallint); @@ -543,10 +543,10 @@ create operator family alt_opf13 using hash; create function fn_opf13(int) returns bigint +language sql as $function$ SELECT NULL::BIGINT; -$function$ -language sql; +$function$; alter operator family alt_opf13 using hash add function 1 fn_opf13(int); @@ -560,10 +560,10 @@ create operator family alt_opf14 using btree; create function fn_opf14(int) returns bigint +language sql as $function$ SELECT NULL::BIGINT; -$function$ -language sql; +$function$; alter operator family alt_opf14 using btree add function 1 fn_opf14(int); @@ -577,10 +577,10 @@ create operator family alt_opf15 using hash; create function fn_opf15(int, smallint) returns bigint +language sql as $function$ SELECT NULL::BIGINT; -$function$ -language sql; +$function$; alter operator family alt_opf15 using hash add function 1 fn_opf15(int, smallint); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__alter_generic_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__alter_generic_80.snap index b3e87979f..04f731c2c 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__alter_generic_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__alter_generic_80.snap @@ -4,8 +4,8 @@ input_file: crates/pgls_pretty_print/tests/data/multi/alter_generic.sql --- create function test_opclass_options_func(internal) returns void -as 'regresslib', 'test_opclass_options_func' -language c; +language c +as 'regresslib', 'test_opclass_options_func'; set client_min_messages = warning; @@ -555,10 +555,10 @@ create operator family alt_opf12 using btree; create function fn_opf12(int, smallint) returns bigint +language sql as $function$ SELECT NULL::BIGINT; -$function$ -language sql; +$function$; alter operator family alt_opf12 using btree add function 1 fn_opf12(int, smallint); @@ -573,10 +573,10 @@ create operator family alt_opf13 using hash; create function fn_opf13(int) returns bigint +language sql as $function$ SELECT NULL::BIGINT; -$function$ -language sql; +$function$; alter operator family alt_opf13 using hash add function 1 fn_opf13(int); @@ -590,10 +590,10 @@ create operator family alt_opf14 using btree; create function fn_opf14(int) returns bigint +language sql as $function$ SELECT NULL::BIGINT; -$function$ -language sql; +$function$; alter operator family alt_opf14 using btree add function 1 fn_opf14(int); @@ -607,10 +607,10 @@ create operator family alt_opf15 using hash; create function fn_opf15(int, smallint) returns bigint +language sql as $function$ SELECT NULL::BIGINT; -$function$ -language sql; +$function$; alter operator family alt_opf15 using hash add function 1 fn_opf15(int, smallint); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__alter_operator_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__alter_operator_100.snap index 192905775..0fb849724 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__alter_operator_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__alter_operator_100.snap @@ -4,20 +4,20 @@ input_file: crates/pgls_pretty_print/tests/data/multi/alter_operator.sql --- create function alter_op_test_fn(boolean, boolean) returns boolean +language sql +immutable as $function$ SELECT NULL::BOOLEAN; -$function$ -language sql -immutable; +$function$; create function customcontsel(internal, oid, internal, int) returns double precision -as $function$ -contsel -$function$ language internal stable -strict; +strict +as $function$ +contsel +$function$; create operator === (LEFTARG = boolean, RIGHTARG = boolean, @@ -172,19 +172,19 @@ reset session_authorization; create function alter_op_test_fn_bool_real(boolean, real) returns boolean +language sql +immutable as $function$ SELECT NULL::BOOLEAN; -$function$ -language sql -immutable; +$function$; create function alter_op_test_fn_real_bool(real, boolean) returns boolean +language sql +immutable as $function$ SELECT NULL::BOOLEAN; -$function$ -language sql -immutable; +$function$; create operator === (LEFTARG = boolean, RIGHTARG = real, PROCEDURE = alter_op_test_fn_bool_real); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__alter_operator_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__alter_operator_80.snap index 82d451d7c..1b1da723b 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__alter_operator_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__alter_operator_80.snap @@ -4,20 +4,20 @@ input_file: crates/pgls_pretty_print/tests/data/multi/alter_operator.sql --- create function alter_op_test_fn(boolean, boolean) returns boolean +language sql +immutable as $function$ SELECT NULL::BOOLEAN; -$function$ -language sql -immutable; +$function$; create function customcontsel(internal, oid, internal, int) returns double precision -as $function$ -contsel -$function$ language internal stable -strict; +strict +as $function$ +contsel +$function$; create operator === (LEFTARG = boolean, RIGHTARG = boolean, @@ -188,19 +188,19 @@ reset session_authorization; create function alter_op_test_fn_bool_real(boolean, real) returns boolean +language sql +immutable as $function$ SELECT NULL::BOOLEAN; -$function$ -language sql -immutable; +$function$; create function alter_op_test_fn_real_bool(real, boolean) returns boolean +language sql +immutable as $function$ SELECT NULL::BOOLEAN; -$function$ -language sql -immutable; +$function$; create operator === (LEFTARG = boolean, RIGHTARG = real, diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__alter_table_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__alter_table_100.snap index d71f1a881..97ce2746c 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__alter_table_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__alter_table_100.snap @@ -683,9 +683,9 @@ alter table attmp3 create function boo(int) returns int +language plpgsql immutable strict -language plpgsql as $function$ BEGIN RAISE NOTICE 'boo: %', $1; RETURN $1; END; $function$; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__alter_table_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__alter_table_80.snap index 0e9c60c9d..6dc935e6b 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__alter_table_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__alter_table_80.snap @@ -702,9 +702,9 @@ alter table attmp3 create function boo(int) returns int +language plpgsql immutable strict -language plpgsql as $function$ BEGIN RAISE NOTICE 'boo: %', $1; RETURN $1; END; $function$; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__arrays_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__arrays_100.snap index 905ec9b53..da82e92d1 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__arrays_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__arrays_100.snap @@ -879,20 +879,20 @@ drop type comptype; create or replace function unnest1(anyarray) returns setof anyelement +language sql +immutable as $function$ select $1[s] from generate_subscripts($1,1) g(s); -$function$ -language sql -immutable; +$function$; create or replace function unnest2(anyarray) returns setof anyelement +language sql +immutable as $function$ select $1[s1][s2] from generate_subscripts($1,1) g1(s1), generate_subscripts($1,2) g2(s2); -$function$ -language sql -immutable; +$function$; select * from unnest1(array[1, 2, 3]); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__arrays_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__arrays_80.snap index b0a30d1a0..908ef2e42 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__arrays_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__arrays_80.snap @@ -1047,20 +1047,20 @@ drop type comptype; create or replace function unnest1(anyarray) returns setof anyelement +language sql +immutable as $function$ select $1[s] from generate_subscripts($1,1) g(s); -$function$ -language sql -immutable; +$function$; create or replace function unnest2(anyarray) returns setof anyelement +language sql +immutable as $function$ select $1[s1][s2] from generate_subscripts($1,1) g1(s1), generate_subscripts($1,2) g2(s2); -$function$ -language sql -immutable; +$function$; select * from unnest1(array[1, 2, 3]); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__case_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__case_100.snap index cf92a9942..41b63019c 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__case_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__case_100.snap @@ -124,11 +124,11 @@ begin; create function vol(text) returns text +language plpgsql +volatile as $function$ begin return $1; end -$function$ -language plpgsql -volatile; +$function$; select case case vol('bar') @@ -145,18 +145,18 @@ create domain foodomain as text; create function volfoo(text) returns foodomain +language plpgsql +volatile as $function$ begin return $1::foodomain; end -$function$ -language plpgsql -volatile; +$function$; create function inline_eq(foodomain, foodomain) returns boolean +language sql as $function$ SELECT CASE $2::text WHEN $1::text THEN true ELSE false END -$function$ -language sql; +$function$; create operator = (PROCEDURE = inline_eq, LEFTARG = foodomain, RIGHTARG = foodomain); @@ -170,22 +170,22 @@ create domain arrdomain as int[]; create function make_ad(int, int) returns arrdomain +language plpgsql +volatile as $function$ declare x arrdomain; begin x := array[$1,$2]; return x; end -$function$ -language plpgsql -volatile; +$function$; create function ad_eq(arrdomain, arrdomain) returns boolean +language plpgsql as $function$ begin return array_eq($1, $2); end -$function$ -language plpgsql; +$function$; create operator = (PROCEDURE = ad_eq, LEFTARG = arrdomain, RIGHTARG = arrdomain); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__case_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__case_80.snap index 8dd72bba2..1e5a3550c 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__case_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__case_80.snap @@ -134,11 +134,11 @@ begin; create function vol(text) returns text +language plpgsql +volatile as $function$ begin return $1; end -$function$ -language plpgsql -volatile; +$function$; select case case vol('bar') @@ -155,18 +155,18 @@ create domain foodomain as text; create function volfoo(text) returns foodomain +language plpgsql +volatile as $function$ begin return $1::foodomain; end -$function$ -language plpgsql -volatile; +$function$; create function inline_eq(foodomain, foodomain) returns boolean +language sql as $function$ SELECT CASE $2::text WHEN $1::text THEN true ELSE false END -$function$ -language sql; +$function$; create operator = (PROCEDURE = inline_eq, LEFTARG = foodomain, @@ -187,22 +187,22 @@ create domain arrdomain as int[]; create function make_ad(int, int) returns arrdomain +language plpgsql +volatile as $function$ declare x arrdomain; begin x := array[$1,$2]; return x; end -$function$ -language plpgsql -volatile; +$function$; create function ad_eq(arrdomain, arrdomain) returns boolean +language plpgsql as $function$ begin return array_eq($1, $2); end -$function$ -language plpgsql; +$function$; create operator = (PROCEDURE = ad_eq, LEFTARG = arrdomain, diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__collate.icu.utf8_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__collate.icu.utf8_100.snap index 4de143dee..f29904d0c 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__collate.icu.utf8_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__collate.icu.utf8_100.snap @@ -440,10 +440,10 @@ select * from unnest((select array_agg(b order by b) from collate_test3)) order create function dup(anyelement) returns anyelement +language sql as $function$ select $1 -$function$ -language sql; +$function$; select a, dup(b) from collate_test1 order by 2; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__collate.icu.utf8_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__collate.icu.utf8_80.snap index 9b5604769..b59682ab0 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__collate.icu.utf8_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__collate.icu.utf8_80.snap @@ -563,10 +563,10 @@ order by 1; create function dup(anyelement) returns anyelement +language sql as $function$ select $1 -$function$ -language sql; +$function$; select a, dup(b) from collate_test1 order by 2; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__collate.linux.utf8_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__collate.linux.utf8_100.snap index 2b402c4d7..b431bc272 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__collate.linux.utf8_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__collate.linux.utf8_100.snap @@ -450,10 +450,10 @@ select * from unnest((select array_agg(b order by b) from collate_test3)) order create function dup(anyelement) returns anyelement +language sql as $function$ select $1 -$function$ -language sql; +$function$; select a, dup(b) from collate_test1 order by 2; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__collate.linux.utf8_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__collate.linux.utf8_80.snap index 0b9ea2cb5..6f8ce2727 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__collate.linux.utf8_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__collate.linux.utf8_80.snap @@ -562,10 +562,10 @@ order by 1; create function dup(anyelement) returns anyelement +language sql as $function$ select $1 -$function$ -language sql; +$function$; select a, dup(b) from collate_test1 order by 2; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__collate_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__collate_100.snap index 36b4cc296..685db34fa 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__collate_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__collate_100.snap @@ -260,10 +260,10 @@ select * from unnest((select array_agg(b order by b) from collate_test2)) order create function dup(anyelement) returns anyelement +language sql as $function$ select $1 -$function$ -language sql; +$function$; select a, dup(b) from collate_test1 order by 2; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__collate_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__collate_80.snap index c32076b61..e437d4349 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__collate_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__collate_80.snap @@ -371,10 +371,10 @@ order by 1; create function dup(anyelement) returns anyelement +language sql as $function$ select $1 -$function$ -language sql; +$function$; select a, dup(b) from collate_test1 order by 2; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__conversion_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__conversion_100.snap index c154a45ed..b0e0e5ce7 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__conversion_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__conversion_100.snap @@ -1,20 +1,19 @@ --- source: crates/pgls_pretty_print/tests/tests.rs input_file: crates/pgls_pretty_print/tests/data/multi/conversion.sql -snapshot_kind: text --- create function test_enc_setup() returns void -as 'regresslib', 'test_enc_setup' language c -strict; +strict +as 'regresslib', 'test_enc_setup'; select from test_enc_setup(); create function test_enc_conversion(bytea, name, name, boolean, out validlen int, out result bytea) -as 'regresslib', 'test_enc_conversion' language c -strict; +strict +as 'regresslib', 'test_enc_conversion'; create user regress_conversion_user nocreatedb nocreaterole; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__conversion_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__conversion_80.snap index 3a12f9356..01d7525ae 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__conversion_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__conversion_80.snap @@ -1,13 +1,12 @@ --- source: crates/pgls_pretty_print/tests/tests.rs input_file: crates/pgls_pretty_print/tests/data/multi/conversion.sql -snapshot_kind: text --- create function test_enc_setup() returns void -as 'regresslib', 'test_enc_setup' language c -strict; +strict +as 'regresslib', 'test_enc_setup'; select from test_enc_setup(); @@ -20,9 +19,9 @@ test_enc_conversion( out validlen int, out result bytea ) -as 'regresslib', 'test_enc_conversion' language c -strict; +strict +as 'regresslib', 'test_enc_conversion'; create user regress_conversion_user nocreatedb nocreaterole; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__copy2_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__copy2_100.snap index a86f9aec7..4a8e32fac 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__copy2_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__copy2_100.snap @@ -12,23 +12,23 @@ create temporary table x ( create function fn_x_before() returns trigger +language plpgsql as $function$ BEGIN NEW.e := 'before trigger fired'::text; return NEW; END; -$function$ -language plpgsql; +$function$; create function fn_x_after() returns trigger +language plpgsql as $function$ BEGIN UPDATE x set e='after trigger fired' where c='stuff'; return NULL; END; -$function$ -language plpgsql; +$function$; create trigger trg_x_after after insert on x for each row execute function fn_x_after(); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__copy2_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__copy2_80.snap index f76600474..68a167a76 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__copy2_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__copy2_80.snap @@ -12,23 +12,23 @@ create temporary table x ( create function fn_x_before() returns trigger +language plpgsql as $function$ BEGIN NEW.e := 'before trigger fired'::text; return NEW; END; -$function$ -language plpgsql; +$function$; create function fn_x_after() returns trigger +language plpgsql as $function$ BEGIN UPDATE x set e='after trigger fired' where c='stuff'; return NULL; END; -$function$ -language plpgsql; +$function$; create trigger trg_x_after after insert diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__copy_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__copy_100.snap index 56c21cd96..5445342c2 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__copy_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__copy_100.snap @@ -1,7 +1,6 @@ --- source: crates/pgls_pretty_print/tests/tests.rs input_file: crates/pgls_pretty_print/tests/data/multi/copy.sql -snapshot_kind: text --- create temporary table copytest ( style text, @@ -191,6 +190,7 @@ create table tab_progress_reporting ( create function notice_after_tab_progress_reporting() returns trigger +language plpgsql as $function$ declare report record; begin @@ -215,8 +215,7 @@ begin raise info 'progress: %', report.value::text; return new; end; -$function$ -language plpgsql; +$function$; create trigger check_after_tab_progress_reporting after insert diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__copy_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__copy_80.snap index c90ecd1fd..611b66674 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__copy_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__copy_80.snap @@ -1,7 +1,6 @@ --- source: crates/pgls_pretty_print/tests/tests.rs input_file: crates/pgls_pretty_print/tests/data/multi/copy.sql -snapshot_kind: text --- create temporary table copytest ( style text, @@ -209,6 +208,7 @@ create table tab_progress_reporting ( create function notice_after_tab_progress_reporting() returns trigger +language plpgsql as $function$ declare report record; begin @@ -233,8 +233,7 @@ begin raise info 'progress: %', report.value::text; return new; end; -$function$ -language plpgsql; +$function$; create trigger check_after_tab_progress_reporting after insert diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__copydml_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__copydml_100.snap index 0c64503c0..d18a95c4c 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__copydml_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__copydml_100.snap @@ -1,7 +1,6 @@ --- source: crates/pgls_pretty_print/tests/tests.rs input_file: crates/pgls_pretty_print/tests/data/multi/copydml.sql -snapshot_kind: text --- create table copydml_test ( id serial, @@ -155,6 +154,7 @@ drop rule qqq on copydml_test; create function qqq_trig() returns trigger +language plpgsql as $function$ begin if tg_op in ('INSERT', 'UPDATE') then @@ -165,8 +165,7 @@ else return old; end if; end -$function$ -language plpgsql; +$function$; create trigger qqqbef before insert or delete or update diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__copydml_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__copydml_80.snap index 0c64503c0..d18a95c4c 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__copydml_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__copydml_80.snap @@ -1,7 +1,6 @@ --- source: crates/pgls_pretty_print/tests/tests.rs input_file: crates/pgls_pretty_print/tests/data/multi/copydml.sql -snapshot_kind: text --- create table copydml_test ( id serial, @@ -155,6 +154,7 @@ drop rule qqq on copydml_test; create function qqq_trig() returns trigger +language plpgsql as $function$ begin if tg_op in ('INSERT', 'UPDATE') then @@ -165,8 +165,7 @@ else return old; end if; end -$function$ -language plpgsql; +$function$; create trigger qqqbef before insert or delete or update diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_aggregate_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_aggregate_100.snap index 18a280f64..1b123c736 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_aggregate_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_aggregate_100.snap @@ -32,12 +32,12 @@ comment on aggregate newcnt("any") is 'an agg(any) comment'; create function sum3(bigint, bigint, bigint) returns bigint -as $function$ -select $1 + $2 + $3 -$function$ language sql +immutable strict -immutable; +as $function$ +select $1 + $2 + $3 +$function$; create aggregate sum2 (bigint, bigint) (sfunc = sum3, stype = bigint, initcond = '0'); @@ -45,20 +45,20 @@ create type aggtype as (a int, b int, c text); create function aggf_trans(aggtype[], int, int, text) returns aggtype[] -as $function$ -select array_append($1,ROW($2,$3,$4)::aggtype) -$function$ language sql +immutable strict -immutable; +as $function$ +select array_append($1,ROW($2,$3,$4)::aggtype) +$function$; create function aggfns_trans(aggtype[], int, int, text) returns aggtype[] +language sql +immutable as $function$ select array_append($1,ROW($2,$3,$4)::aggtype) -$function$ -language sql -immutable; +$function$; create aggregate aggfstr (int, int, text) (sfunc = aggf_trans, stype = aggtype[], initcond = '{}'); @@ -275,12 +275,12 @@ create or replace aggregate myavg (numeric) (stype = numeric, sfunc = numeric_ad create function sum4(bigint, bigint, bigint, bigint) returns bigint -as $function$ -select $1 + $2 + $3 + $4 -$function$ language sql +immutable strict -immutable; +as $function$ +select $1 + $2 + $3 + $4 +$function$; create or replace aggregate sum3 (bigint, bigint, bigint) (stype = bigint, sfunc = sum4); @@ -292,10 +292,10 @@ create aggregate mysum (int) (stype = int, sfunc = int4pl, parallel = pear); create function float8mi_n(double precision, double precision) returns double precision +language sql as $function$ SELECT $1 - $2; -$function$ -language sql; +$function$; create aggregate invalidsumdouble ( double precision @@ -309,10 +309,10 @@ create aggregate invalidsumdouble ( create function float8mi_int(double precision, double precision) returns int +language sql as $function$ SELECT CAST($1 - $2 AS INT); -$function$ -language sql; +$function$; create aggregate wrongreturntype ( double precision diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_aggregate_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_aggregate_80.snap index 72adc00ff..13aa6bcab 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_aggregate_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_aggregate_80.snap @@ -55,12 +55,12 @@ comment on aggregate newcnt("any") is 'an agg(any) comment'; create function sum3(bigint, bigint, bigint) returns bigint -as $function$ -select $1 + $2 + $3 -$function$ language sql +immutable strict -immutable; +as $function$ +select $1 + $2 + $3 +$function$; create aggregate sum2 ( bigint, bigint @@ -74,20 +74,20 @@ create type aggtype as (a int, b int, c text); create function aggf_trans(aggtype[], int, int, text) returns aggtype[] -as $function$ -select array_append($1,ROW($2,$3,$4)::aggtype) -$function$ language sql +immutable strict -immutable; +as $function$ +select array_append($1,ROW($2,$3,$4)::aggtype) +$function$; create function aggfns_trans(aggtype[], int, int, text) returns aggtype[] +language sql +immutable as $function$ select array_append($1,ROW($2,$3,$4)::aggtype) -$function$ -language sql -immutable; +$function$; create aggregate aggfstr ( int, int, text @@ -328,12 +328,12 @@ create or replace aggregate myavg ( create function sum4(bigint, bigint, bigint, bigint) returns bigint -as $function$ -select $1 + $2 + $3 + $4 -$function$ language sql +immutable strict -immutable; +as $function$ +select $1 + $2 + $3 + $4 +$function$; create or replace aggregate sum3 ( bigint, bigint, bigint @@ -350,10 +350,10 @@ create aggregate mysum (int) (stype = int, sfunc = int4pl, parallel = pear); create function float8mi_n(double precision, double precision) returns double precision +language sql as $function$ SELECT $1 - $2; -$function$ -language sql; +$function$; create aggregate invalidsumdouble ( double precision @@ -367,10 +367,10 @@ create aggregate invalidsumdouble ( create function float8mi_int(double precision, double precision) returns int +language sql as $function$ SELECT CAST($1 - $2 AS INT); -$function$ -language sql; +$function$; create aggregate wrongreturntype ( double precision diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_cast_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_cast_100.snap index 7624b261e..ef63e5e05 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_cast_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_cast_100.snap @@ -6,21 +6,21 @@ create type casttesttype; create function casttesttype_in(cstring) returns casttesttype -as $function$ -textin -$function$ language internal +immutable strict -immutable; +as $function$ +textin +$function$; create function casttesttype_out(casttesttype) returns cstring -as $function$ -textout -$function$ language internal +immutable strict -immutable; +as $function$ +textout +$function$; create type casttesttype ( internallength = variable, diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_cast_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_cast_80.snap index c4dc4edcc..b85f46257 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_cast_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_cast_80.snap @@ -6,21 +6,21 @@ create type casttesttype; create function casttesttype_in(cstring) returns casttesttype -as $function$ -textin -$function$ language internal +immutable strict -immutable; +as $function$ +textin +$function$; create function casttesttype_out(casttesttype) returns cstring -as $function$ -textout -$function$ language internal +immutable strict -immutable; +as $function$ +textout +$function$; create type casttesttype ( internallength = variable, diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_function_sql_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_function_sql_100.snap index 0beb26a79..eeea42557 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_function_sql_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_function_sql_100.snap @@ -668,10 +668,10 @@ select * from sometable; create function voidtest5(a int) returns setof void language sql +stable as $function$ SELECT generate_series(1, a) -$function$ -stable; +$function$; select * from voidtest5(3); @@ -719,8 +719,8 @@ from create function part_hashint4_error(value int, seed bigint) returns bigint language sql -strict immutable +strict parallel SAFE as $function$ SELECT value + seed + random()::int/0 diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_function_sql_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_function_sql_80.snap index c93d957ab..14c8cdb8f 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_function_sql_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_function_sql_80.snap @@ -672,10 +672,10 @@ select * from sometable; create function voidtest5(a int) returns setof void language sql +stable as $function$ SELECT generate_series(1, a) -$function$ -stable; +$function$; select * from voidtest5(3); @@ -729,8 +729,8 @@ from create function part_hashint4_error(value int, seed bigint) returns bigint language sql -strict immutable +strict parallel SAFE as $function$ SELECT value + seed + random()::int/0 diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_index_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_index_100.snap index b3473a5c0..02c3a01c4 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_index_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_index_100.snap @@ -641,8 +641,8 @@ commit; create function predicate_stable() returns boolean -immutable language plpgsql +immutable as $function$ BEGIN EXECUTE 'SELECT txid_current()'; @@ -1810,6 +1810,7 @@ rollback; create or replace function create_relfilenode_part(relname text, indname text) returns void +language plpgsql as $function$ BEGIN EXECUTE format(' @@ -1820,8 +1821,7 @@ BEGIN (SELECT relid FROM pg_partition_tree(''%I''));', relname, indname); END -$function$ -language plpgsql; +$function$; create or replace function compare_relfilenode_part(tabname text) returns table ( @@ -1829,6 +1829,7 @@ returns table ( relkind char, state text ) +language plpgsql as $function$ BEGIN RETURN QUERY EXECUTE @@ -1841,8 +1842,7 @@ BEGIN FROM %I b JOIN pg_class a ON b.relname = a.relname ORDER BY 1;', tabname); END -$function$ -language plpgsql; +$function$; select create_relfilenode_part('reindex_index_status', 'concur_reindex_part_index'); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_index_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_index_80.snap index 49e37a0bc..1bdb1ec20 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_index_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_index_80.snap @@ -838,8 +838,8 @@ commit; create function predicate_stable() returns boolean -immutable language plpgsql +immutable as $function$ BEGIN EXECUTE 'SELECT txid_current()'; @@ -2307,6 +2307,7 @@ rollback; create or replace function create_relfilenode_part(relname text, indname text) returns void +language plpgsql as $function$ BEGIN EXECUTE format(' @@ -2317,8 +2318,7 @@ BEGIN (SELECT relid FROM pg_partition_tree(''%I''));', relname, indname); END -$function$ -language plpgsql; +$function$; create or replace function compare_relfilenode_part(tabname text) returns table ( @@ -2326,6 +2326,7 @@ returns table ( relkind char, state text ) +language plpgsql as $function$ BEGIN RETURN QUERY EXECUTE @@ -2338,8 +2339,7 @@ BEGIN FROM %I b JOIN pg_class a ON b.relname = a.relname ORDER BY 1;', tabname); END -$function$ -language plpgsql; +$function$; select create_relfilenode_part( diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_operator_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_operator_100.snap index a2198a3c7..a44b460cd 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_operator_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_operator_100.snap @@ -95,11 +95,11 @@ begin; create or replace function fn_op2(boolean, boolean) returns boolean +language sql +immutable as $function$ SELECT NULL::BOOLEAN; -$function$ -language sql -immutable; +$function$; create operator === (LEFTARG = boolean, RIGHTARG = boolean, @@ -131,11 +131,11 @@ create type type_op3 as enum ('new', 'open', 'closed'); create function fn_op3(type_op3, bigint) returns bigint +language sql +immutable as $function$ SELECT NULL::int8; -$function$ -language sql -immutable; +$function$; revoke USAGE on type type_op3 from regress_rol_op3; @@ -155,11 +155,11 @@ create type type_op4 as enum ('new', 'open', 'closed'); create function fn_op4(bigint, type_op4) returns bigint +language sql +immutable as $function$ SELECT NULL::int8; -$function$ -language sql -immutable; +$function$; revoke USAGE on type type_op4 from regress_rol_op4; @@ -179,11 +179,11 @@ create type type_op5 as enum ('new', 'open', 'closed'); create function fn_op5(bigint, bigint) returns bigint +language sql +immutable as $function$ SELECT NULL::int8; -$function$ -language sql -immutable; +$function$; revoke EXECUTE on function fn_op5(bigint, bigint) from regress_rol_op5; @@ -203,11 +203,11 @@ create type type_op6 as enum ('new', 'open', 'closed'); create function fn_op6(bigint, bigint) returns type_op6 +language sql +immutable as $function$ SELECT NULL::type_op6; -$function$ -language sql -immutable; +$function$; revoke USAGE on type type_op6 from regress_rol_op6; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_operator_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_operator_80.snap index 80d4b056e..d79010f4a 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_operator_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_operator_80.snap @@ -98,11 +98,11 @@ begin; create or replace function fn_op2(boolean, boolean) returns boolean +language sql +immutable as $function$ SELECT NULL::BOOLEAN; -$function$ -language sql -immutable; +$function$; create operator === (LEFTARG = boolean, RIGHTARG = boolean, @@ -136,11 +136,11 @@ create type type_op3 as enum ('new', 'open', 'closed'); create function fn_op3(type_op3, bigint) returns bigint +language sql +immutable as $function$ SELECT NULL::int8; -$function$ -language sql -immutable; +$function$; revoke USAGE on type type_op3 from regress_rol_op3; @@ -160,11 +160,11 @@ create type type_op4 as enum ('new', 'open', 'closed'); create function fn_op4(bigint, type_op4) returns bigint +language sql +immutable as $function$ SELECT NULL::int8; -$function$ -language sql -immutable; +$function$; revoke USAGE on type type_op4 from regress_rol_op4; @@ -184,11 +184,11 @@ create type type_op5 as enum ('new', 'open', 'closed'); create function fn_op5(bigint, bigint) returns bigint +language sql +immutable as $function$ SELECT NULL::int8; -$function$ -language sql -immutable; +$function$; revoke EXECUTE on function fn_op5(bigint, bigint) from regress_rol_op5; @@ -208,11 +208,11 @@ create type type_op6 as enum ('new', 'open', 'closed'); create function fn_op6(bigint, bigint) returns type_op6 +language sql +immutable as $function$ SELECT NULL::type_op6; -$function$ -language sql -immutable; +$function$; revoke USAGE on type type_op6 from regress_rol_op6; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_table_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_table_100.snap index 5e081bd69..6dd8a52d8 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_table_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_table_100.snap @@ -188,11 +188,11 @@ partition by LIST(a1, a2); create function retset(a int) returns setof int +language sql +immutable as $function$ SELECT 1; -$function$ -language sql -immutable; +$function$; create table partitioned (a int) partition by range((retset(a))); @@ -216,11 +216,11 @@ partition by range((42)); create function const_func() returns int +language sql +immutable as $function$ SELECT 1; -$function$ -language sql -immutable; +$function$; create table partitioned (a int) partition by range((const_func())); @@ -247,10 +247,10 @@ partition by range(a, ('unknown')); create function immut_func(a int) returns int +language sql as $function$ SELECT a + random()::int; -$function$ -language sql; +$function$; create table partitioned (a int) partition by range((immut_func(a))); @@ -277,10 +277,10 @@ partition by range(a); create function plusone(a int) returns int +language sql as $function$ SELECT a+1; -$function$ -language sql; +$function$; create table partitioned ( a int, diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_table_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_table_80.snap index 7ef1471fd..33d215005 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_table_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_table_80.snap @@ -195,11 +195,11 @@ partition by LIST(a1, a2); create function retset(a int) returns setof int +language sql +immutable as $function$ SELECT 1; -$function$ -language sql -immutable; +$function$; create table partitioned (a int) partition by range((retset(a))); @@ -223,11 +223,11 @@ partition by range((42)); create function const_func() returns int +language sql +immutable as $function$ SELECT 1; -$function$ -language sql -immutable; +$function$; create table partitioned (a int) partition by range((const_func())); @@ -254,10 +254,10 @@ partition by range(a, ('unknown')); create function immut_func(a int) returns int +language sql as $function$ SELECT a + random()::int; -$function$ -language sql; +$function$; create table partitioned (a int) partition by range((immut_func(a))); @@ -284,10 +284,10 @@ partition by range(a); create function plusone(a int) returns int +language sql as $function$ SELECT a+1; -$function$ -language sql; +$function$; create table partitioned ( a int, diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_type_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_type_100.snap index 884d50e49..8af26961f 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_type_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_type_100.snap @@ -4,39 +4,39 @@ input_file: crates/pgls_pretty_print/tests/data/multi/create_type.sql --- create function widget_in(cstring) returns widget -as $function$ -regresslib -$function$ language c +immutable strict -immutable; +as $function$ +regresslib +$function$; create function widget_out(widget) returns cstring -as $function$ -regresslib -$function$ language c +immutable strict -immutable; +as $function$ +regresslib +$function$; create function int44in(cstring) returns city_budget -as $function$ -regresslib -$function$ language c +immutable strict -immutable; +as $function$ +regresslib +$function$; create function int44out(city_budget) returns cstring -as $function$ -regresslib -$function$ language c +immutable strict -immutable; +as $function$ +regresslib +$function$; create type widget ( internallength = 24, @@ -72,39 +72,39 @@ create type text_w_default; create function int42_in(cstring) returns int42 -as $function$ -int4in -$function$ language internal +immutable strict -immutable; +as $function$ +int4in +$function$; create function int42_out(int42) returns cstring -as $function$ -int4out -$function$ language internal +immutable strict -immutable; +as $function$ +int4out +$function$; create function text_w_default_in(cstring) returns text_w_default -as $function$ -textin -$function$ language internal +immutable strict -immutable; +as $function$ +textin +$function$; create function text_w_default_out(text_w_default) returns cstring -as $function$ -textout -$function$ language internal +immutable strict -immutable; +as $function$ +textout +$function$; create type int42 ( internallength = 4, @@ -153,10 +153,10 @@ create type default_test_row as (f1 text_w_default, f2 int42); create function get_default_test() returns setof default_test_row +language sql as $function$ SELECT * FROM default_test; -$function$ -language sql; +$function$; select * from get_default_test(); @@ -182,21 +182,21 @@ create type base_type; create function base_fn_in(cstring) returns base_type -as $function$ -boolin -$function$ language internal immutable -strict; +strict +as $function$ +boolin +$function$; create function base_fn_out(base_type) returns cstring -as $function$ -boolout -$function$ language internal immutable -strict; +strict +as $function$ +boolout +$function$; create type base_type (input = base_fn_in, output = base_fn_out); @@ -244,11 +244,11 @@ select pg_input_is_valid('("(1,2)")', 'mytab'); create function pt_in_widget(point, widget) returns boolean +language c +strict as $function$ regresslib -$function$ -language c -strict; +$function$; create operator <% (LEFTARG = point, RIGHTARG = widget, @@ -287,8 +287,8 @@ create function myvarcharin(cstring, oid, int) returns myvarchar language internal immutable -parallel SAFE strict +parallel SAFE as $function$ varcharin $function$; @@ -297,8 +297,8 @@ create function myvarcharout(myvarchar) returns cstring language internal immutable -parallel SAFE strict +parallel SAFE as $function$ varcharout $function$; @@ -307,8 +307,8 @@ create function myvarcharsend(myvarchar) returns bytea language internal stable -parallel SAFE strict +parallel SAFE as $function$ varcharsend $function$; @@ -317,8 +317,8 @@ create function myvarcharrecv(internal, oid, int) returns myvarchar language internal stable -parallel SAFE strict +parallel SAFE as $function$ varcharrecv $function$; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_type_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_type_80.snap index 7bf09be88..27f0e1d47 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_type_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_type_80.snap @@ -4,39 +4,39 @@ input_file: crates/pgls_pretty_print/tests/data/multi/create_type.sql --- create function widget_in(cstring) returns widget -as $function$ -regresslib -$function$ language c +immutable strict -immutable; +as $function$ +regresslib +$function$; create function widget_out(widget) returns cstring -as $function$ -regresslib -$function$ language c +immutable strict -immutable; +as $function$ +regresslib +$function$; create function int44in(cstring) returns city_budget -as $function$ -regresslib -$function$ language c +immutable strict -immutable; +as $function$ +regresslib +$function$; create function int44out(city_budget) returns cstring -as $function$ -regresslib -$function$ language c +immutable strict -immutable; +as $function$ +regresslib +$function$; create type widget ( internallength = 24, @@ -72,39 +72,39 @@ create type text_w_default; create function int42_in(cstring) returns int42 -as $function$ -int4in -$function$ language internal +immutable strict -immutable; +as $function$ +int4in +$function$; create function int42_out(int42) returns cstring -as $function$ -int4out -$function$ language internal +immutable strict -immutable; +as $function$ +int4out +$function$; create function text_w_default_in(cstring) returns text_w_default -as $function$ -textin -$function$ language internal +immutable strict -immutable; +as $function$ +textin +$function$; create function text_w_default_out(text_w_default) returns cstring -as $function$ -textout -$function$ language internal +immutable strict -immutable; +as $function$ +textout +$function$; create type int42 ( internallength = 4, @@ -163,10 +163,10 @@ create type default_test_row as (f1 text_w_default, f2 int42); create function get_default_test() returns setof default_test_row +language sql as $function$ SELECT * FROM default_test; -$function$ -language sql; +$function$; select * from get_default_test(); @@ -192,21 +192,21 @@ create type base_type; create function base_fn_in(cstring) returns base_type -as $function$ -boolin -$function$ language internal immutable -strict; +strict +as $function$ +boolin +$function$; create function base_fn_out(base_type) returns cstring -as $function$ -boolout -$function$ language internal immutable -strict; +strict +as $function$ +boolout +$function$; create type base_type (input = base_fn_in, output = base_fn_out); @@ -254,11 +254,11 @@ select pg_input_is_valid('("(1,2)")', 'mytab'); create function pt_in_widget(point, widget) returns boolean +language c +strict as $function$ regresslib -$function$ -language c -strict; +$function$; create operator <% (LEFTARG = point, RIGHTARG = widget, @@ -299,8 +299,8 @@ create function myvarcharin(cstring, oid, int) returns myvarchar language internal immutable -parallel SAFE strict +parallel SAFE as $function$ varcharin $function$; @@ -309,8 +309,8 @@ create function myvarcharout(myvarchar) returns cstring language internal immutable -parallel SAFE strict +parallel SAFE as $function$ varcharout $function$; @@ -319,8 +319,8 @@ create function myvarcharsend(myvarchar) returns bytea language internal stable -parallel SAFE strict +parallel SAFE as $function$ varcharsend $function$; @@ -329,8 +329,8 @@ create function myvarcharrecv(internal, oid, int) returns myvarchar language internal stable -parallel SAFE strict +parallel SAFE as $function$ varcharrecv $function$; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_view_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_view_100.snap index 3c80a725b..a1940f120 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_view_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_view_100.snap @@ -4,11 +4,11 @@ input_file: crates/pgls_pretty_print/tests/data/multi/create_view.sql --- create function interpt_pp(path, path) returns point +language c +strict as $function$ regresslib -$function$ -language c -strict; +$function$; create table real_city ( pop int, @@ -1168,6 +1168,7 @@ alter table tt14t create function tt14f() returns setof tt14t +language plpgsql as $function$ declare rec1 record; @@ -1177,8 +1178,7 @@ begin return next rec1; end loop; end; -$function$ -language plpgsql; +$function$; create view tt14v as select t.* from tt14f() as t; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_view_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_view_80.snap index b591f0c1a..a3000540e 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_view_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__create_view_80.snap @@ -4,11 +4,11 @@ input_file: crates/pgls_pretty_print/tests/data/multi/create_view.sql --- create function interpt_pp(path, path) returns point +language c +strict as $function$ regresslib -$function$ -language c -strict; +$function$; create table real_city ( pop int, @@ -1241,6 +1241,7 @@ alter table tt14t create function tt14f() returns setof tt14t +language plpgsql as $function$ declare rec1 record; @@ -1250,8 +1251,7 @@ begin return next rec1; end loop; end; -$function$ -language plpgsql; +$function$; create view tt14v as select t.* from tt14f() as t; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__domain_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__domain_100.snap index 3cd090ab2..1bd78ad34 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__domain_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__domain_100.snap @@ -219,10 +219,10 @@ do instead create function makedcomp(r double precision, i double precision) returns dcomptype +language sql as $function$ select row(r, i) -$function$ -language sql; +$function$; select makedcomp(1, 2); @@ -777,38 +777,38 @@ execute s1 (null); create function doubledecrement(p1 pos_int) returns pos_int +language plpgsql as $function$ declare v pos_int; begin return p1; end -$function$ -language plpgsql; +$function$; select doubledecrement(3); create or replace function doubledecrement(p1 pos_int) returns pos_int +language plpgsql as $function$ declare v pos_int := 0; begin return p1; end -$function$ -language plpgsql; +$function$; select doubledecrement(3); create or replace function doubledecrement(p1 pos_int) returns pos_int +language plpgsql as $function$ declare v pos_int := 1; begin v := p1 - 1; return v - 1; end -$function$ -language plpgsql; +$function$; select doubledecrement(null); @@ -900,6 +900,7 @@ drop domain posint cascade; create or replace function array_elem_check(numeric) returns numeric +language plpgsql as $function$ declare x numeric(4,2)[1]; @@ -907,8 +908,7 @@ begin x[1] := $1; return x[1]; end -$function$ -language plpgsql; +$function$; select array_elem_check(121.00); @@ -918,6 +918,7 @@ create domain mynums as numeric(4, 2)[1]; create or replace function array_elem_check(numeric) returns numeric +language plpgsql as $function$ declare x mynums; @@ -925,8 +926,7 @@ begin x[1] := $1; return x[1]; end -$function$ -language plpgsql; +$function$; select array_elem_check(121.00); @@ -936,6 +936,7 @@ create domain mynums2 as mynums; create or replace function array_elem_check(numeric) returns numeric +language plpgsql as $function$ declare x mynums2; @@ -943,8 +944,7 @@ begin x[1] := $1; return x[1]; end -$function$ -language plpgsql; +$function$; select array_elem_check(121.00); @@ -972,6 +972,7 @@ select * from op; create or replace function array_elem_check(int) returns int +language plpgsql as $function$ declare x orderedpair := '{1,2}'; @@ -979,8 +980,7 @@ begin x[2] := $1; return x[2]; end -$function$ -language plpgsql; +$function$; select array_elem_check(3); @@ -992,15 +992,15 @@ create domain di as int; create function dom_check(int) returns di +language plpgsql +immutable as $function$ declare d di; begin d := $1::di; return d; end -$function$ -language plpgsql -immutable; +$function$; select dom_check(0); @@ -1014,15 +1014,15 @@ select dom_check(0); create or replace function dom_check(int) returns di +language plpgsql +immutable as $function$ declare d di; begin d := $1; return d; end -$function$ -language plpgsql -immutable; +$function$; select dom_check(0); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__domain_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__domain_80.snap index 8b00b388e..3961c75c4 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__domain_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__domain_80.snap @@ -225,10 +225,10 @@ do instead create function makedcomp(r double precision, i double precision) returns dcomptype +language sql as $function$ select row(r, i) -$function$ -language sql; +$function$; select makedcomp(1, 2); @@ -815,38 +815,38 @@ execute s1 (null); create function doubledecrement(p1 pos_int) returns pos_int +language plpgsql as $function$ declare v pos_int; begin return p1; end -$function$ -language plpgsql; +$function$; select doubledecrement(3); create or replace function doubledecrement(p1 pos_int) returns pos_int +language plpgsql as $function$ declare v pos_int := 0; begin return p1; end -$function$ -language plpgsql; +$function$; select doubledecrement(3); create or replace function doubledecrement(p1 pos_int) returns pos_int +language plpgsql as $function$ declare v pos_int := 1; begin v := p1 - 1; return v - 1; end -$function$ -language plpgsql; +$function$; select doubledecrement(null); @@ -938,6 +938,7 @@ drop domain posint cascade; create or replace function array_elem_check(numeric) returns numeric +language plpgsql as $function$ declare x numeric(4,2)[1]; @@ -945,8 +946,7 @@ begin x[1] := $1; return x[1]; end -$function$ -language plpgsql; +$function$; select array_elem_check(121.00); @@ -956,6 +956,7 @@ create domain mynums as numeric(4, 2)[1]; create or replace function array_elem_check(numeric) returns numeric +language plpgsql as $function$ declare x mynums; @@ -963,8 +964,7 @@ begin x[1] := $1; return x[1]; end -$function$ -language plpgsql; +$function$; select array_elem_check(121.00); @@ -974,6 +974,7 @@ create domain mynums2 as mynums; create or replace function array_elem_check(numeric) returns numeric +language plpgsql as $function$ declare x mynums2; @@ -981,8 +982,7 @@ begin x[1] := $1; return x[1]; end -$function$ -language plpgsql; +$function$; select array_elem_check(121.00); @@ -1010,6 +1010,7 @@ select * from op; create or replace function array_elem_check(int) returns int +language plpgsql as $function$ declare x orderedpair := '{1,2}'; @@ -1017,8 +1018,7 @@ begin x[2] := $1; return x[2]; end -$function$ -language plpgsql; +$function$; select array_elem_check(3); @@ -1030,15 +1030,15 @@ create domain di as int; create function dom_check(int) returns di +language plpgsql +immutable as $function$ declare d di; begin d := $1::di; return d; end -$function$ -language plpgsql -immutable; +$function$; select dom_check(0); @@ -1052,15 +1052,15 @@ select dom_check(0); create or replace function dom_check(int) returns di +language plpgsql +immutable as $function$ declare d di; begin d := $1; return d; end -$function$ -language plpgsql -immutable; +$function$; select dom_check(0); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__drop_if_exists_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__drop_if_exists_100.snap index 326b957eb..6f633f4f9 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__drop_if_exists_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__drop_if_exists_100.snap @@ -308,17 +308,17 @@ drop view if exists no_such_schema.foo; create function test_ambiguous_funcname(int) returns int +language sql as $function$ select $1; -$function$ -language sql; +$function$; create function test_ambiguous_funcname(text) returns text +language sql as $function$ select $1; -$function$ -language sql; +$function$; drop function test_ambiguous_funcname; @@ -329,16 +329,16 @@ drop function test_ambiguous_funcname(int); drop function test_ambiguous_funcname(text); create procedure test_ambiguous_procname(int) +language plpgsql as $procedure$ begin end; -$procedure$ -language plpgsql; +$procedure$; create procedure test_ambiguous_procname(text) +language plpgsql as $procedure$ begin end; -$procedure$ -language plpgsql; +$procedure$; drop procedure test_ambiguous_procname; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__drop_if_exists_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__drop_if_exists_80.snap index babffa8ca..aa73e931f 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__drop_if_exists_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__drop_if_exists_80.snap @@ -314,17 +314,17 @@ drop view if exists no_such_schema.foo; create function test_ambiguous_funcname(int) returns int +language sql as $function$ select $1; -$function$ -language sql; +$function$; create function test_ambiguous_funcname(text) returns text +language sql as $function$ select $1; -$function$ -language sql; +$function$; drop function test_ambiguous_funcname; @@ -335,16 +335,16 @@ drop function test_ambiguous_funcname(int); drop function test_ambiguous_funcname(text); create procedure test_ambiguous_procname(int) +language plpgsql as $procedure$ begin end; -$procedure$ -language plpgsql; +$procedure$; create procedure test_ambiguous_procname(text) +language plpgsql as $procedure$ begin end; -$procedure$ -language plpgsql; +$procedure$; drop procedure test_ambiguous_procname; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__enum_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__enum_100.snap index 8279f8afb..dd71eba28 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__enum_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__enum_100.snap @@ -1,7 +1,6 @@ --- source: crates/pgls_pretty_print/tests/tests.rs input_file: crates/pgls_pretty_print/tests/data/multi/enum.sql -snapshot_kind: text --- create type rainbow as enum ('red', 'orange', 'yellow', 'green', 'blue', 'purple'); @@ -261,23 +260,23 @@ select enum_range(cast(null as rainbow), null); create function echo_me(anyenum) returns text +language plpgsql as $function$ BEGIN RETURN $1::text || 'omg'; END -$function$ -language plpgsql; +$function$; select echo_me(cast('red' as rainbow)); create function echo_me(rainbow) returns text +language plpgsql as $function$ BEGIN RETURN $1::text || 'wtf'; END -$function$ -language plpgsql; +$function$; select echo_me(cast('red' as rainbow)); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__enum_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__enum_80.snap index 94bc00dab..8fd3e8db4 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__enum_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__enum_80.snap @@ -1,7 +1,6 @@ --- source: crates/pgls_pretty_print/tests/tests.rs input_file: crates/pgls_pretty_print/tests/data/multi/enum.sql -snapshot_kind: text --- create type rainbow as enum ('red', 'orange', @@ -266,23 +265,23 @@ select enum_range(cast(null as rainbow), null); create function echo_me(anyenum) returns text +language plpgsql as $function$ BEGIN RETURN $1::text || 'omg'; END -$function$ -language plpgsql; +$function$; select echo_me(cast('red' as rainbow)); create function echo_me(rainbow) returns text +language plpgsql as $function$ BEGIN RETURN $1::text || 'wtf'; END -$function$ -language plpgsql; +$function$; select echo_me(cast('red' as rainbow)); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__equivclass_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__equivclass_100.snap index 767dd281c..3b10c361f 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__equivclass_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__equivclass_100.snap @@ -6,18 +6,18 @@ create type int8alias1; create function int8alias1in(cstring) returns int8alias1 -strict -immutable language internal +immutable +strict as $function$ int8in $function$; create function int8alias1out(int8alias1) returns cstring -strict -immutable language internal +immutable +strict as $function$ int8out $function$; @@ -28,18 +28,18 @@ create type int8alias2; create function int8alias2in(cstring) returns int8alias2 -strict -immutable language internal +immutable +strict as $function$ int8in $function$; create function int8alias2out(int8alias2) returns cstring -strict -immutable language internal +immutable +strict as $function$ int8out $function$; @@ -56,9 +56,9 @@ create cast (int8alias2 as bigint) without function; create function int8alias1eq(int8alias1, int8alias1) returns boolean -strict -immutable language internal +immutable +strict as $function$ int8eq $function$; @@ -75,9 +75,9 @@ alter operator family integer_ops using btree add operator 3 = (int8alias1, int8 create function int8alias2eq(int8alias2, int8alias2) returns boolean -strict -immutable language internal +immutable +strict as $function$ int8eq $function$; @@ -94,9 +94,9 @@ alter operator family integer_ops using btree add operator 3 = (int8alias2, int8 create function int8alias1eq(bigint, int8alias1) returns boolean -strict -immutable language internal +immutable +strict as $function$ int8eq $function$; @@ -112,9 +112,9 @@ alter operator family integer_ops using btree add operator 3 = (bigint, int8alia create function int8alias1eq(int8alias1, int8alias2) returns boolean -strict -immutable language internal +immutable +strict as $function$ int8eq $function$; @@ -130,9 +130,9 @@ alter operator family integer_ops using btree add operator 3 = (int8alias1, int8 create function int8alias1lt(int8alias1, int8alias1) returns boolean -strict -immutable language internal +immutable +strict as $function$ int8lt $function$; @@ -143,9 +143,9 @@ alter operator family integer_ops using btree add operator 1 < (int8alias1, int8 create function int8alias1cmp(bigint, int8alias1) returns int -strict -immutable language internal +immutable +strict as $function$ btint8cmp $function$; @@ -470,9 +470,9 @@ alter operator family integer_ops using hash add operator 1 = (bigint, int8alias create function hashint8alias1(int8alias1) returns int -strict -immutable language internal +immutable +strict as $function$ hashint8 $function$; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__equivclass_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__equivclass_80.snap index 7fd70b898..7e2ea0184 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__equivclass_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__equivclass_80.snap @@ -6,18 +6,18 @@ create type int8alias1; create function int8alias1in(cstring) returns int8alias1 -strict -immutable language internal +immutable +strict as $function$ int8in $function$; create function int8alias1out(int8alias1) returns cstring -strict -immutable language internal +immutable +strict as $function$ int8out $function$; @@ -32,18 +32,18 @@ create type int8alias2; create function int8alias2in(cstring) returns int8alias2 -strict -immutable language internal +immutable +strict as $function$ int8in $function$; create function int8alias2out(int8alias2) returns cstring -strict -immutable language internal +immutable +strict as $function$ int8out $function$; @@ -64,9 +64,9 @@ create cast (int8alias2 as bigint) without function; create function int8alias1eq(int8alias1, int8alias1) returns boolean -strict -immutable language internal +immutable +strict as $function$ int8eq $function$; @@ -84,9 +84,9 @@ alter operator family integer_ops using btree create function int8alias2eq(int8alias2, int8alias2) returns boolean -strict -immutable language internal +immutable +strict as $function$ int8eq $function$; @@ -104,9 +104,9 @@ alter operator family integer_ops using btree create function int8alias1eq(bigint, int8alias1) returns boolean -strict -immutable language internal +immutable +strict as $function$ int8eq $function$; @@ -123,9 +123,9 @@ alter operator family integer_ops using btree create function int8alias1eq(int8alias1, int8alias2) returns boolean -strict -immutable language internal +immutable +strict as $function$ int8eq $function$; @@ -142,9 +142,9 @@ alter operator family integer_ops using btree create function int8alias1lt(int8alias1, int8alias1) returns boolean -strict -immutable language internal +immutable +strict as $function$ int8lt $function$; @@ -158,9 +158,9 @@ alter operator family integer_ops using btree create function int8alias1cmp(bigint, int8alias1) returns int -strict -immutable language internal +immutable +strict as $function$ btint8cmp $function$; @@ -510,9 +510,9 @@ alter operator family integer_ops using hash create function hashint8alias1(int8alias1) returns int -strict -immutable language internal +immutable +strict as $function$ hashint8 $function$; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__event_trigger_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__event_trigger_100.snap index 7c07e38ed..9d3a57232 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__event_trigger_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__event_trigger_100.snap @@ -6,28 +6,28 @@ create event trigger "regress_event_trigger" on ddl_command_start execute functi create function test_event_trigger() returns event_trigger +language plpgsql as $function$ BEGIN RAISE NOTICE 'test_event_trigger: % %', tg_event, tg_tag; END -$function$ -language plpgsql; +$function$; select test_event_trigger(); create function test_event_trigger_arg(name text) returns event_trigger +language plpgsql as $function$ BEGIN RETURN 1; END -$function$ -language plpgsql; +$function$; create function test_event_trigger_sql() returns event_trigger +language sql as $function$ SELECT 1 -$function$ -language sql; +$function$; create event trigger "regress_event_trigger" on elephant_bootstrap @@ -603,12 +603,12 @@ drop function test_evtrig_no_rewrite(); create or replace function reindex_start_command() returns event_trigger +language plpgsql as $function$ BEGIN RAISE NOTICE 'REINDEX START: % %', tg_event, tg_tag; END; -$function$ -language plpgsql; +$function$; create event trigger "regress_reindex_start" on ddl_command_start @@ -617,6 +617,7 @@ execute function reindex_start_command(); create function reindex_end_command() returns event_trigger +language plpgsql as $function$ DECLARE obj record; @@ -627,8 +628,7 @@ BEGIN obj.command_tag, obj.object_type, obj.object_identity; END LOOP; END; -$function$ -language plpgsql; +$function$; create event trigger "regress_reindex_end" on ddl_command_end @@ -637,10 +637,10 @@ execute function reindex_end_command(); create function reindex_end_command_snap() returns event_trigger +language plpgsql as $function$ BEGIN PERFORM 1; END -$function$ -language plpgsql; +$function$; create event trigger "regress_reindex_end_snap" on ddl_command_end @@ -740,30 +740,30 @@ create table event_trigger_test ( create or replace function start_command() returns event_trigger +language plpgsql as $function$ BEGIN RAISE NOTICE '% - ddl_command_start', tg_tag; END; -$function$ -language plpgsql; +$function$; create or replace function end_command() returns event_trigger +language plpgsql as $function$ BEGIN RAISE NOTICE '% - ddl_command_end', tg_tag; END; -$function$ -language plpgsql; +$function$; create or replace function drop_sql_command() returns event_trigger +language plpgsql as $function$ BEGIN RAISE NOTICE '% - sql_drop', tg_tag; END; -$function$ -language plpgsql; +$function$; create event trigger "start_rls_command" on ddl_command_start diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__event_trigger_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__event_trigger_80.snap index f68eac40f..15a176b1d 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__event_trigger_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__event_trigger_80.snap @@ -8,28 +8,28 @@ execute function pg_backend_pid(); create function test_event_trigger() returns event_trigger +language plpgsql as $function$ BEGIN RAISE NOTICE 'test_event_trigger: % %', tg_event, tg_tag; END -$function$ -language plpgsql; +$function$; select test_event_trigger(); create function test_event_trigger_arg(name text) returns event_trigger +language plpgsql as $function$ BEGIN RETURN 1; END -$function$ -language plpgsql; +$function$; create function test_event_trigger_sql() returns event_trigger +language sql as $function$ SELECT 1 -$function$ -language sql; +$function$; create event trigger "regress_event_trigger" on elephant_bootstrap @@ -645,12 +645,12 @@ drop function test_evtrig_no_rewrite(); create or replace function reindex_start_command() returns event_trigger +language plpgsql as $function$ BEGIN RAISE NOTICE 'REINDEX START: % %', tg_event, tg_tag; END; -$function$ -language plpgsql; +$function$; create event trigger "regress_reindex_start" on ddl_command_start @@ -659,6 +659,7 @@ execute function reindex_start_command(); create function reindex_end_command() returns event_trigger +language plpgsql as $function$ DECLARE obj record; @@ -669,8 +670,7 @@ BEGIN obj.command_tag, obj.object_type, obj.object_identity; END LOOP; END; -$function$ -language plpgsql; +$function$; create event trigger "regress_reindex_end" on ddl_command_end @@ -679,10 +679,10 @@ execute function reindex_end_command(); create function reindex_end_command_snap() returns event_trigger +language plpgsql as $function$ BEGIN PERFORM 1; END -$function$ -language plpgsql; +$function$; create event trigger "regress_reindex_end_snap" on ddl_command_end @@ -784,30 +784,30 @@ create table event_trigger_test ( create or replace function start_command() returns event_trigger +language plpgsql as $function$ BEGIN RAISE NOTICE '% - ddl_command_start', tg_tag; END; -$function$ -language plpgsql; +$function$; create or replace function end_command() returns event_trigger +language plpgsql as $function$ BEGIN RAISE NOTICE '% - ddl_command_end', tg_tag; END; -$function$ -language plpgsql; +$function$; create or replace function drop_sql_command() returns event_trigger +language plpgsql as $function$ BEGIN RAISE NOTICE '% - sql_drop', tg_tag; END; -$function$ -language plpgsql; +$function$; create event trigger "start_rls_command" on ddl_command_start diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__event_trigger_login_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__event_trigger_login_100.snap index c8e9bcf16..68e9b7197 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__event_trigger_login_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__event_trigger_login_100.snap @@ -1,7 +1,6 @@ --- source: crates/pgls_pretty_print/tests/tests.rs input_file: crates/pgls_pretty_print/tests/data/multi/event_trigger_login.sql -snapshot_kind: text --- create table user_logins ( id serial, @@ -12,13 +11,13 @@ grant SELECT on table user_logins to public; create function on_login_proc() returns event_trigger +language plpgsql as $function$ BEGIN INSERT INTO user_logins (who) VALUES (SESSION_USER); RAISE NOTICE 'You are welcome!'; END; -$function$ -language plpgsql; +$function$; create event trigger "on_login_trigger" on login execute function on_login_proc(); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__event_trigger_login_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__event_trigger_login_80.snap index 836e82187..8cbf9c7ac 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__event_trigger_login_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__event_trigger_login_80.snap @@ -1,7 +1,6 @@ --- source: crates/pgls_pretty_print/tests/tests.rs input_file: crates/pgls_pretty_print/tests/data/multi/event_trigger_login.sql -snapshot_kind: text --- create table user_logins ( id serial, @@ -12,13 +11,13 @@ grant SELECT on table user_logins to public; create function on_login_proc() returns event_trigger +language plpgsql as $function$ BEGIN INSERT INTO user_logins (who) VALUES (SESSION_USER); RAISE NOTICE 'You are welcome!'; END; -$function$ -language plpgsql; +$function$; create event trigger "on_login_trigger" on login diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__expressions_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__expressions_100.snap index 33d853620..e0d147d73 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__expressions_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__expressions_100.snap @@ -90,23 +90,23 @@ begin; create function return_int_input(int) returns int +language plpgsql +stable as $function$ begin return $1; end; -$function$ -language plpgsql -stable; +$function$; create function return_text_input(text) returns text +language plpgsql +stable as $function$ begin return $1; end; -$function$ -language plpgsql -stable; +$function$; select return_int_input(1) in (10, 9, 2, 8, 3, 7, 4, 6, 5, 1); @@ -160,27 +160,27 @@ create type myint; create function myintin(cstring) returns myint -strict -immutable language internal +immutable +strict as $function$ int4in $function$; create function myintout(myint) returns cstring -strict -immutable language internal +immutable +strict as $function$ int4out $function$; create function myinthash(myint) returns int -strict -immutable language internal +immutable +strict as $function$ hashint4 $function$; @@ -193,6 +193,8 @@ create cast (myint as int) without function; create function myinteq(myint, myint) returns boolean +language plpgsql +immutable as $function$ begin if $1 is null and $2 is null then @@ -201,19 +203,17 @@ begin return $1::int = $2::int; end if; end; -$function$ -language plpgsql -immutable; +$function$; create function myintne(myint, myint) returns boolean +language plpgsql +immutable as $function$ begin return not myinteq($1, $2); end; -$function$ -language plpgsql -immutable; +$function$; create operator = (LEFTARG = myint, RIGHTARG = myint, diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__expressions_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__expressions_80.snap index 7f4418275..c090f4912 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__expressions_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__expressions_80.snap @@ -100,23 +100,23 @@ begin; create function return_int_input(int) returns int +language plpgsql +stable as $function$ begin return $1; end; -$function$ -language plpgsql -stable; +$function$; create function return_text_input(text) returns text +language plpgsql +stable as $function$ begin return $1; end; -$function$ -language plpgsql -stable; +$function$; select return_int_input(1) in (10, 9, 2, 8, 3, 7, 4, 6, 5, 1); @@ -222,27 +222,27 @@ create type myint; create function myintin(cstring) returns myint -strict -immutable language internal +immutable +strict as $function$ int4in $function$; create function myintout(myint) returns cstring -strict -immutable language internal +immutable +strict as $function$ int4out $function$; create function myinthash(myint) returns int -strict -immutable language internal +immutable +strict as $function$ hashint4 $function$; @@ -255,6 +255,8 @@ create cast (myint as int) without function; create function myinteq(myint, myint) returns boolean +language plpgsql +immutable as $function$ begin if $1 is null and $2 is null then @@ -263,19 +265,17 @@ begin return $1::int = $2::int; end if; end; -$function$ -language plpgsql -immutable; +$function$; create function myintne(myint, myint) returns boolean +language plpgsql +immutable as $function$ begin return not myinteq($1, $2); end; -$function$ -language plpgsql -immutable; +$function$; create operator = (LEFTARG = myint, RIGHTARG = myint, diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__fast_default_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__fast_default_100.snap index ad0678d8b..1d6eaecf3 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__fast_default_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__fast_default_100.snap @@ -12,6 +12,7 @@ insert into m values (cast(null as oid)); create function set(tabname name) returns void +language plpgsql as $function$ BEGIN UPDATE m @@ -21,11 +22,11 @@ BEGIN AND c.relnamespace = s.oid AND s.nspname = 'fast_default'); END; -$function$ -language plpgsql; +$function$; create function comp() returns text +language plpgsql as $function$ BEGIN RETURN (SELECT CASE @@ -37,8 +38,7 @@ BEGIN AND c.relnamespace = s.oid AND s.nspname = 'fast_default'); END; -$function$ -language plpgsql; +$function$; create function log_rewrite() returns event_trigger @@ -218,6 +218,8 @@ drop table t; create or replace function foo(a int) returns text +language plpgsql +stable as $function$ DECLARE res TEXT := ''; i INT; @@ -229,9 +231,7 @@ BEGIN END LOOP; RETURN res; END; -$function$ -language plpgsql -stable; +$function$; create table t ( pk int not null primary key, @@ -394,11 +394,11 @@ select comp(); create function foolme(timestamp with time zone default clock_timestamp()) returns timestamp with time zone +language sql immutable as $function$ select $1 -$function$ -language sql; +$function$; alter table t add column c3 timestamp with time zone default foolme(); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__fast_default_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__fast_default_80.snap index 47f5b9cb3..e03a84930 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__fast_default_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__fast_default_80.snap @@ -12,6 +12,7 @@ insert into m values (cast(null as oid)); create function set(tabname name) returns void +language plpgsql as $function$ BEGIN UPDATE m @@ -21,11 +22,11 @@ BEGIN AND c.relnamespace = s.oid AND s.nspname = 'fast_default'); END; -$function$ -language plpgsql; +$function$; create function comp() returns text +language plpgsql as $function$ BEGIN RETURN (SELECT CASE @@ -37,8 +38,7 @@ BEGIN AND c.relnamespace = s.oid AND s.nspname = 'fast_default'); END; -$function$ -language plpgsql; +$function$; create function log_rewrite() returns event_trigger @@ -222,6 +222,8 @@ drop table t; create or replace function foo(a int) returns text +language plpgsql +stable as $function$ DECLARE res TEXT := ''; i INT; @@ -233,9 +235,7 @@ BEGIN END LOOP; RETURN res; END; -$function$ -language plpgsql -stable; +$function$; create table t ( pk int not null primary key, @@ -407,11 +407,11 @@ select comp(); create function foolme(timestamp with time zone default clock_timestamp()) returns timestamp with time zone +language sql immutable as $function$ select $1 -$function$ -language sql; +$function$; alter table t add column c3 timestamp with time zone diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__float4_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__float4_100.snap index 651c437c4..fcc192705 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__float4_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__float4_100.snap @@ -184,18 +184,18 @@ create type xfloat4; create function xfloat4in(cstring) returns xfloat4 +language internal immutable strict -language internal as $function$ int4in $function$; create function xfloat4out(xfloat4) returns cstring +language internal immutable strict -language internal as $function$ int4out $function$; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__float4_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__float4_80.snap index f85dba6de..0d355f581 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__float4_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__float4_80.snap @@ -184,18 +184,18 @@ create type xfloat4; create function xfloat4in(cstring) returns xfloat4 +language internal immutable strict -language internal as $function$ int4in $function$; create function xfloat4out(xfloat4) returns cstring +language internal immutable strict -language internal as $function$ int4out $function$; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__float8_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__float8_100.snap index 62bb75935..4ac749864 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__float8_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__float8_100.snap @@ -501,18 +501,18 @@ create type xfloat8; create function xfloat8in(cstring) returns xfloat8 +language internal immutable strict -language internal as $function$ int8in $function$; create function xfloat8out(xfloat8) returns cstring +language internal immutable strict -language internal as $function$ int8out $function$; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__float8_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__float8_80.snap index 7d3871908..cacbe244e 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__float8_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__float8_80.snap @@ -529,18 +529,18 @@ create type xfloat8; create function xfloat8in(cstring) returns xfloat8 +language internal immutable strict -language internal as $function$ int8in $function$; create function xfloat8out(xfloat8) returns cstring +language internal immutable strict -language internal as $function$ int8out $function$; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__foreign_data_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__foreign_data_100.snap index 0dc0e276a..4846d84b8 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__foreign_data_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__foreign_data_100.snap @@ -4,8 +4,8 @@ input_file: crates/pgls_pretty_print/tests/data/multi/foreign_data.sql --- create function test_fdw_handler() returns fdw_handler -as 'regresslib', 'test_fdw_handler' -language c; +language c +as 'regresslib', 'test_fdw_handler'; set client_min_messages = warning; @@ -1098,12 +1098,12 @@ drop server s10 cascade; create function dummy_trigger() returns trigger +language plpgsql as $function$ BEGIN RETURN NULL; END -$function$ -language plpgsql; +$function$; create trigger trigtest_before_stmt before insert or delete or update diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__foreign_data_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__foreign_data_80.snap index 883119efc..9959a8615 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__foreign_data_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__foreign_data_80.snap @@ -4,8 +4,8 @@ input_file: crates/pgls_pretty_print/tests/data/multi/foreign_data.sql --- create function test_fdw_handler() returns fdw_handler -as 'regresslib', 'test_fdw_handler' -language c; +language c +as 'regresslib', 'test_fdw_handler'; set client_min_messages = warning; @@ -1172,12 +1172,12 @@ drop server s10 cascade; create function dummy_trigger() returns trigger +language plpgsql as $function$ BEGIN RETURN NULL; END -$function$ -language plpgsql; +$function$; create trigger trigtest_before_stmt before insert or delete or update diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__generated_stored_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__generated_stored_100.snap index 796b23cc9..2e1634fdb 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__generated_stored_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__generated_stored_100.snap @@ -502,11 +502,11 @@ grant SELECT (a, c) on table gtest11 to regress_user11; create function gf1(a int) returns int +language sql +immutable as $function$ SELECT a * 3 -$function$ -immutable -language sql; +$function$; revoke all on function gf1(int) from public; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__generated_stored_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__generated_stored_80.snap index e2815c9d1..8300e44a5 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__generated_stored_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__generated_stored_80.snap @@ -515,11 +515,11 @@ grant SELECT (a, c) on table gtest11 to regress_user11; create function gf1(a int) returns int +language sql +immutable as $function$ SELECT a * 3 -$function$ -immutable -language sql; +$function$; revoke all on function gf1(int) from public; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__generated_virtual_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__generated_virtual_100.snap index 467eb0d5e..b9e343c70 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__generated_virtual_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__generated_virtual_100.snap @@ -309,11 +309,11 @@ grant SELECT (a, c) on table gtest11 to regress_user11; create function gf1(a int) returns int +language sql +immutable as $function$ SELECT a * 3 -$function$ -immutable -language sql; +$function$; revoke all on function gf1(int) from public; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__generated_virtual_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__generated_virtual_80.snap index eae63d0fa..30c8cff3d 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__generated_virtual_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__generated_virtual_80.snap @@ -310,11 +310,11 @@ grant SELECT (a, c) on table gtest11 to regress_user11; create function gf1(a int) returns int +language sql +immutable as $function$ SELECT a * 3 -$function$ -immutable -language sql; +$function$; revoke all on function gf1(int) from public; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__groupingsets_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__groupingsets_100.snap index 38746df26..fd4941096 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__groupingsets_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__groupingsets_100.snap @@ -71,12 +71,12 @@ create temporary table gstest_empty ( create function gstest_data(v int, out a int, out b int) returns setof record +language plpgsql as $function$ begin return query select v, i from generate_series(1,3) i; end; -$function$ -language plpgsql; +$function$; set enable_hashagg = 'false'; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__groupingsets_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__groupingsets_80.snap index c071602b1..b0c257be4 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__groupingsets_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__groupingsets_80.snap @@ -71,12 +71,12 @@ create temporary table gstest_empty ( create function gstest_data(v int, out a int, out b int) returns setof record +language plpgsql as $function$ begin return query select v, i from generate_series(1,3) i; end; -$function$ -language plpgsql; +$function$; set enable_hashagg = 'false'; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__indexing_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__indexing_100.snap index 24a7abf04..c84aad7e6 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__indexing_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__indexing_100.snap @@ -2223,11 +2223,11 @@ create table test_pg_index_toast_table (a int); create or replace function test_pg_index_toast_func(a int, b int[]) returns boolean +language sql +immutable as $function$ select true -$function$ -language sql -immutable; +$function$; select array_agg(n) as b from generate_series(1, 10000) as n; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__indexing_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__indexing_80.snap index 7381ae94c..dabc1cca2 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__indexing_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__indexing_80.snap @@ -2442,11 +2442,11 @@ create table test_pg_index_toast_table (a int); create or replace function test_pg_index_toast_func(a int, b int[]) returns boolean +language sql +immutable as $function$ select true -$function$ -language sql -immutable; +$function$; select array_agg(n) as b from generate_series(1, 10000) as n; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__indirect_toast_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__indirect_toast_100.snap index a2291a532..096a67cd9 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__indirect_toast_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__indirect_toast_100.snap @@ -4,11 +4,11 @@ input_file: crates/pgls_pretty_print/tests/data/multi/indirect_toast.sql --- create function make_tuple_indirect(record) returns record +language c +strict as $function$ regresslib -$function$ -language c -strict; +$function$; set default_toast_compression = pglz; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__indirect_toast_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__indirect_toast_80.snap index 426d450ac..f01c106bd 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__indirect_toast_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__indirect_toast_80.snap @@ -4,11 +4,11 @@ input_file: crates/pgls_pretty_print/tests/data/multi/indirect_toast.sql --- create function make_tuple_indirect(record) returns record +language c +strict as $function$ regresslib -$function$ -language c -strict; +$function$; set default_toast_compression = pglz; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__infinite_recurse_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__infinite_recurse_100.snap index 55c0f90f0..785e68087 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__infinite_recurse_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__infinite_recurse_100.snap @@ -4,10 +4,10 @@ input_file: crates/pgls_pretty_print/tests/data/multi/infinite_recurse.sql --- create function infinite_recurse() returns int +language sql as $function$ select infinite_recurse() -$function$ -language sql; +$function$; select version() ~ 'powerpc64[^,]*-linux-gnu' as skip_test; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__infinite_recurse_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__infinite_recurse_80.snap index 55c0f90f0..785e68087 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__infinite_recurse_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__infinite_recurse_80.snap @@ -4,10 +4,10 @@ input_file: crates/pgls_pretty_print/tests/data/multi/infinite_recurse.sql --- create function infinite_recurse() returns int +language sql as $function$ select infinite_recurse() -$function$ -language sql; +$function$; select version() ~ 'powerpc64[^,]*-linux-gnu' as skip_test; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__inherit_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__inherit_100.snap index ee3abcab1..9ab2a67cc 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__inherit_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__inherit_100.snap @@ -193,10 +193,10 @@ create index on some_tab_child using btree (f1, f2); create function some_tab_stmt_trig_func() returns trigger +language plpgsql as $function$ begin raise notice 'updating some_tab'; return NULL; end; -$function$ -language plpgsql; +$function$; create trigger some_tab_stmt_trig before update @@ -518,10 +518,10 @@ create table p2 (f1 text); create function p2text(p2) returns text +language sql as $function$ select $1.f1 -$function$ -language sql; +$function$; create table c1 (f3 int) inherits (p1, diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__inherit_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__inherit_80.snap index 8e1a7e3fe..4bfb40fa0 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__inherit_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__inherit_80.snap @@ -199,10 +199,10 @@ create index on some_tab_child using btree (f1, f2); create function some_tab_stmt_trig_func() returns trigger +language plpgsql as $function$ begin raise notice 'updating some_tab'; return NULL; end; -$function$ -language plpgsql; +$function$; create trigger some_tab_stmt_trig before update @@ -551,10 +551,10 @@ create table p2 (f1 text); create function p2text(p2) returns text +language sql as $function$ select $1.f1 -$function$ -language sql; +$function$; create table c1 (f3 int) inherits (p1, diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__insert_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__insert_100.snap index f9abc959a..bc9bc4915 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__insert_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__insert_100.snap @@ -543,13 +543,13 @@ alter table mlparted create function mlparted11_trig_fn() returns trigger +language plpgsql as $function$ begin NEW.b := 4; return NEW; end; -$function$ -language plpgsql; +$function$; create trigger mlparted11_trig before insert @@ -657,10 +657,10 @@ insert into mlparted values (1, 45, 'a'); create function mlparted5abrtrig_func() returns trigger +language plpgsql as $function$ begin new.c = 'b'; return new; end; -$function$ -language plpgsql; +$function$; create trigger mlparted5abrtrig before insert @@ -932,10 +932,10 @@ create table brtrigpartcon1 partition of brtrigpartcon for values in (1); create or replace function brtrigpartcon1trigf() returns trigger +language plpgsql as $function$ begin new.a := 2; return new; end -$function$ -language plpgsql; +$function$; create trigger brtrigpartcon1trig before insert @@ -1009,10 +1009,10 @@ alter table donothingbrtrig_test2 create or replace function donothingbrtrig_func() returns trigger +language plpgsql as $function$ begin raise notice 'b: %', new.b; return NULL; end -$function$ -language plpgsql; +$function$; create trigger donothingbrtrig1 before insert diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__insert_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__insert_80.snap index 6f9b3ca39..e553f2261 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__insert_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__insert_80.snap @@ -602,13 +602,13 @@ alter table mlparted create function mlparted11_trig_fn() returns trigger +language plpgsql as $function$ begin NEW.b := 4; return NEW; end; -$function$ -language plpgsql; +$function$; create trigger mlparted11_trig before insert @@ -725,10 +725,10 @@ insert into mlparted values (1, 45, 'a'); create function mlparted5abrtrig_func() returns trigger +language plpgsql as $function$ begin new.c = 'b'; return new; end; -$function$ -language plpgsql; +$function$; create trigger mlparted5abrtrig before insert @@ -1019,10 +1019,10 @@ create table brtrigpartcon1 partition of brtrigpartcon for values in (1); create or replace function brtrigpartcon1trigf() returns trigger +language plpgsql as $function$ begin new.a := 2; return new; end -$function$ -language plpgsql; +$function$; create trigger brtrigpartcon1trig before insert @@ -1096,10 +1096,10 @@ alter table donothingbrtrig_test2 create or replace function donothingbrtrig_func() returns trigger +language plpgsql as $function$ begin raise notice 'b: %', new.b; return NULL; end -$function$ -language plpgsql; +$function$; create trigger donothingbrtrig1 before insert diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__insert_conflict_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__insert_conflict_100.snap index 87857b96b..2109f230b 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__insert_conflict_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__insert_conflict_100.snap @@ -1,7 +1,6 @@ --- source: crates/pgls_pretty_print/tests/tests.rs input_file: crates/pgls_pretty_print/tests/data/multi/insert_conflict.sql -snapshot_kind: text --- create table insertconflicttest ( key int, @@ -1213,6 +1212,7 @@ select * from parted_conflict order by a; create or replace function parted_conflict_update_func() returns trigger +language plpgsql as $function$ declare r record; @@ -1222,8 +1222,7 @@ begin end loop; return new; end; -$function$ -language plpgsql; +$function$; create trigger parted_conflict_update after update diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__insert_conflict_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__insert_conflict_80.snap index e57ac220c..8146855dc 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__insert_conflict_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__insert_conflict_80.snap @@ -1,7 +1,6 @@ --- source: crates/pgls_pretty_print/tests/tests.rs input_file: crates/pgls_pretty_print/tests/data/multi/insert_conflict.sql -snapshot_kind: text --- create table insertconflicttest ( key int, @@ -1392,6 +1391,7 @@ select * from parted_conflict order by a; create or replace function parted_conflict_update_func() returns trigger +language plpgsql as $function$ declare r record; @@ -1401,8 +1401,7 @@ begin end loop; return new; end; -$function$ -language plpgsql; +$function$; create trigger parted_conflict_update after update diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__interval_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__interval_100.snap index fd6d105d0..303cb7081 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__interval_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__interval_100.snap @@ -1,7 +1,6 @@ --- source: crates/pgls_pretty_print/tests/tests.rs input_file: crates/pgls_pretty_print/tests/data/multi/interval.sql -snapshot_kind: text --- set datestyle = ISO; @@ -947,6 +946,7 @@ select i, isfinite(i) from infinite_interval_tbl; create function eval(expr text) returns text +language plpgsql as $function$ DECLARE result text; @@ -956,8 +956,7 @@ BEGIN EXCEPTION WHEN OTHERS THEN RETURN SQLERRM; END -$function$ -language plpgsql; +$function$; select d as date, diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__interval_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__interval_80.snap index 483ff8d7d..77e67157b 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__interval_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__interval_80.snap @@ -1,7 +1,6 @@ --- source: crates/pgls_pretty_print/tests/tests.rs input_file: crates/pgls_pretty_print/tests/data/multi/interval.sql -snapshot_kind: text --- set datestyle = ISO; @@ -1039,6 +1038,7 @@ select i, isfinite(i) from infinite_interval_tbl; create function eval(expr text) returns text +language plpgsql as $function$ DECLARE result text; @@ -1048,8 +1048,7 @@ BEGIN EXCEPTION WHEN OTHERS THEN RETURN SQLERRM; END -$function$ -language plpgsql; +$function$; select d as date, diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__lock_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__lock_100.snap index 76aa4af01..f8f3dc734 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__lock_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__lock_100.snap @@ -354,9 +354,9 @@ reset search_path; create function test_atomic_ops() returns boolean +language c as $function$ regresslib -$function$ -language c; +$function$; select test_atomic_ops(); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__lock_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__lock_80.snap index dc9e79b15..3471d115e 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__lock_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__lock_80.snap @@ -357,9 +357,9 @@ reset search_path; create function test_atomic_ops() returns boolean +language c as $function$ regresslib -$function$ -language c; +$function$; select test_atomic_ops(); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__merge_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__merge_100.snap index 4481f2fb1..f403fbfae 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__merge_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__merge_100.snap @@ -1462,6 +1462,7 @@ insert into measurement values (0, '2005-07-21', 5, 15); create or replace function measurement_insert_trigger() returns trigger +language plpgsql as $function$ BEGIN IF ( NEW.logdate >= DATE '2006-02-01' AND @@ -1479,8 +1480,7 @@ BEGIN END IF; RETURN NULL; END; -$function$ -language plpgsql; +$function$; create trigger insert_measurement_trigger before insert diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__merge_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__merge_80.snap index 52b7d3394..7ef650da9 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__merge_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__merge_80.snap @@ -1560,6 +1560,7 @@ insert into measurement values (0, '2005-07-21', 5, 15); create or replace function measurement_insert_trigger() returns trigger +language plpgsql as $function$ BEGIN IF ( NEW.logdate >= DATE '2006-02-01' AND @@ -1577,8 +1578,7 @@ BEGIN END IF; RETURN NULL; END; -$function$ -language plpgsql; +$function$; create trigger insert_measurement_trigger before insert diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__misc_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__misc_100.snap index 96681dbc6..24138dd14 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__misc_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__misc_100.snap @@ -4,19 +4,19 @@ input_file: crates/pgls_pretty_print/tests/data/multi/misc.sql --- create function overpaid(emp) returns boolean +language c +strict as $function$ regresslib -$function$ -language c -strict; +$function$; create function reverse_name(name) returns name +language c +strict as $function$ regresslib -$function$ -language c -strict; +$function$; update onek set unique1 = onek.unique1 + 1; @@ -98,80 +98,80 @@ insert into equipment_r (name, hobby) values ('guts', 'skywalking'); create function hobbies(person) returns setof hobbies_r +language sql as $function$ select * from hobbies_r where person = $1.name -$function$ -language sql; +$function$; create function hobby_construct(text, text) returns hobbies_r +language sql as $function$ select $1 as name, $2 as hobby -$function$ -language sql; +$function$; create function hobby_construct_named(name text, hobby text) returns hobbies_r +language sql as $function$ select name, hobby -$function$ -language sql; +$function$; create function hobbies_by_name(hobbies_r.name%type) returns hobbies_r.person%type +language sql as $function$ select person from hobbies_r where name = $1 -$function$ -language sql; +$function$; create function equipment(hobbies_r) returns setof equipment_r +language sql as $function$ select * from equipment_r where hobby = $1.name -$function$ -language sql; +$function$; create function equipment_named(hobby hobbies_r) returns setof equipment_r +language sql as $function$ select * from equipment_r where equipment_r.hobby = equipment_named.hobby.name -$function$ -language sql; +$function$; create function equipment_named_ambiguous_1a(hobby hobbies_r) returns setof equipment_r +language sql as $function$ select * from equipment_r where hobby = equipment_named_ambiguous_1a.hobby.name -$function$ -language sql; +$function$; create function equipment_named_ambiguous_1b(hobby hobbies_r) returns setof equipment_r +language sql as $function$ select * from equipment_r where equipment_r.hobby = hobby.name -$function$ -language sql; +$function$; create function equipment_named_ambiguous_1c(hobby hobbies_r) returns setof equipment_r +language sql as $function$ select * from equipment_r where hobby = hobby.name -$function$ -language sql; +$function$; create function equipment_named_ambiguous_2a(hobby text) returns setof equipment_r +language sql as $function$ select * from equipment_r where hobby = equipment_named_ambiguous_2a.hobby -$function$ -language sql; +$function$; create function equipment_named_ambiguous_2b(hobby text) returns setof equipment_r +language sql as $function$ select * from equipment_r where equipment_r.hobby = hobby -$function$ -language sql; +$function$; select p.name, name(p.hobbies) from only person as p; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__misc_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__misc_80.snap index f749ddf21..203b6c73d 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__misc_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__misc_80.snap @@ -4,19 +4,19 @@ input_file: crates/pgls_pretty_print/tests/data/multi/misc.sql --- create function overpaid(emp) returns boolean +language c +strict as $function$ regresslib -$function$ -language c -strict; +$function$; create function reverse_name(name) returns name +language c +strict as $function$ regresslib -$function$ -language c -strict; +$function$; update onek set unique1 = onek.unique1 + 1; @@ -98,80 +98,80 @@ insert into equipment_r (name, hobby) values ('guts', 'skywalking'); create function hobbies(person) returns setof hobbies_r +language sql as $function$ select * from hobbies_r where person = $1.name -$function$ -language sql; +$function$; create function hobby_construct(text, text) returns hobbies_r +language sql as $function$ select $1 as name, $2 as hobby -$function$ -language sql; +$function$; create function hobby_construct_named(name text, hobby text) returns hobbies_r +language sql as $function$ select name, hobby -$function$ -language sql; +$function$; create function hobbies_by_name(hobbies_r.name%type) returns hobbies_r.person%type +language sql as $function$ select person from hobbies_r where name = $1 -$function$ -language sql; +$function$; create function equipment(hobbies_r) returns setof equipment_r +language sql as $function$ select * from equipment_r where hobby = $1.name -$function$ -language sql; +$function$; create function equipment_named(hobby hobbies_r) returns setof equipment_r +language sql as $function$ select * from equipment_r where equipment_r.hobby = equipment_named.hobby.name -$function$ -language sql; +$function$; create function equipment_named_ambiguous_1a(hobby hobbies_r) returns setof equipment_r +language sql as $function$ select * from equipment_r where hobby = equipment_named_ambiguous_1a.hobby.name -$function$ -language sql; +$function$; create function equipment_named_ambiguous_1b(hobby hobbies_r) returns setof equipment_r +language sql as $function$ select * from equipment_r where equipment_r.hobby = hobby.name -$function$ -language sql; +$function$; create function equipment_named_ambiguous_1c(hobby hobbies_r) returns setof equipment_r +language sql as $function$ select * from equipment_r where hobby = hobby.name -$function$ -language sql; +$function$; create function equipment_named_ambiguous_2a(hobby text) returns setof equipment_r +language sql as $function$ select * from equipment_r where hobby = equipment_named_ambiguous_2a.hobby -$function$ -language sql; +$function$; create function equipment_named_ambiguous_2b(hobby text) returns setof equipment_r +language sql as $function$ select * from equipment_r where equipment_r.hobby = hobby -$function$ -language sql; +$function$; select p.name, name(p.hobbies) from only person as p; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__misc_functions_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__misc_functions_100.snap index 204942d82..c83981bb2 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__misc_functions_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__misc_functions_100.snap @@ -128,12 +128,12 @@ select num_nulls(); create function test_canonicalize_path(text) returns text -as $function$ -regresslib -$function$ language c +immutable strict -immutable; +as $function$ +regresslib +$function$; select test_canonicalize_path('/'); @@ -313,8 +313,8 @@ drop role regress_slot_dir_funcs; create function my_int_eq(int, int) returns boolean language internal -strict immutable +strict parallel SAFE as $function$ int4eq @@ -332,9 +332,9 @@ where create function test_support_func(internal) returns internal -as 'regresslib', 'test_support_func' language c -strict; +strict +as 'regresslib', 'test_support_func'; alter function my_int_eq(int, int) support test_support_func; @@ -351,13 +351,13 @@ where create function my_gen_series(int, int) returns setof int language internal -strict immutable +strict parallel SAFE +support test_support_func as $function$ generate_series_int4 -$function$ -support test_support_func; +$function$; select * from tenk1 as a inner join my_gen_series(1, 1000) as g on a.unique1 = g; @@ -603,10 +603,10 @@ select gist_translate_cmptype_common(3); create function test_relpath() returns void +language c as $function$ regresslib -$function$ -language c; +$function$; select test_relpath(); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__misc_functions_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__misc_functions_80.snap index d786f4701..eee8e3e4b 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__misc_functions_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__misc_functions_80.snap @@ -128,12 +128,12 @@ select num_nulls(); create function test_canonicalize_path(text) returns text -as $function$ -regresslib -$function$ language c +immutable strict -immutable; +as $function$ +regresslib +$function$; select test_canonicalize_path('/'); @@ -366,8 +366,8 @@ drop role regress_slot_dir_funcs; create function my_int_eq(int, int) returns boolean language internal -strict immutable +strict parallel SAFE as $function$ int4eq @@ -385,9 +385,9 @@ where create function test_support_func(internal) returns internal -as 'regresslib', 'test_support_func' language c -strict; +strict +as 'regresslib', 'test_support_func'; alter function my_int_eq(int, int) support test_support_func; @@ -404,13 +404,13 @@ where create function my_gen_series(int, int) returns setof int language internal -strict immutable +strict parallel SAFE +support test_support_func as $function$ generate_series_int4 -$function$ -support test_support_func; +$function$; select * @@ -685,10 +685,10 @@ select gist_translate_cmptype_common(3); create function test_relpath() returns void +language c as $function$ regresslib -$function$ -language c; +$function$; select test_relpath(); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__multirangetypes_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__multirangetypes_100.snap index bedbeacad..34e296309 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__multirangetypes_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__multirangetypes_100.snap @@ -1436,10 +1436,10 @@ drop role regress_multirange_owner; create function anyarray_anymultirange_func(a anyarray, r anymultirange) returns anyelement +language sql as $function$ select $1[1] + lower($2); -$function$ -language sql; +$function$; select anyarray_anymultirange_func(array[1, 2], int4multirange(int4range(10, 20))); @@ -1449,34 +1449,34 @@ drop function anyarray_anymultirange_func(anyarray, anymultirange); create function bogus_func(anyelement) returns anymultirange +language sql as $function$ select int4multirange(int4range(1,10)) -$function$ -language sql; +$function$; create function bogus_func(int) returns anymultirange +language sql as $function$ select int4multirange(int4range(1,10)) -$function$ -language sql; +$function$; create function range_add_bounds(anymultirange) returns anyelement +language sql as $function$ select lower($1) + upper($1) -$function$ -language sql; +$function$; select range_add_bounds(int4multirange(int4range(1, 17))); select range_add_bounds(nummultirange(numrange(1.0001, 123.123))); create function multirangetypes_sql(q anymultirange, b anyarray, out c anyelement) +language sql as $function$ select upper($1) + $2[1] -$function$ -language sql; +$function$; select multirangetypes_sql(int4multirange(int4range(1, 10)), array[2, 20]); @@ -1488,10 +1488,10 @@ anycompatiblearray_anycompatiblemultirange_func( mr anycompatiblemultirange ) returns anycompatible +language sql as $function$ select $1[1] + lower($2); -$function$ -language sql; +$function$; select anycompatiblearray_anycompatiblemultirange_func(array[1, 2], multirange(int4range(10, 20))); @@ -1514,10 +1514,10 @@ anycompatiblerange_anycompatiblemultirange_func( mr anycompatiblemultirange ) returns anycompatible +language sql as $function$ select lower($1) + lower($2); -$function$ -language sql; +$function$; select anycompatiblerange_anycompatiblemultirange_func( @@ -1538,10 +1538,10 @@ drop function create function bogus_func(anycompatible) returns anycompatiblerange +language sql as $function$ select int4range(1,10) -$function$ -language sql; +$function$; select array[nummultirange(numrange(1.1, 1.2)), nummultirange(numrange(12.3, 155.5))]; @@ -1602,42 +1602,42 @@ select cast('{(01,10)}' as varbitmultirange) except select cast('{(10,11)}' as v reset enable_sort; create function mr_outparam_succeed(i anymultirange, out r anymultirange, out t text) +language sql as $function$ select $1, 'foo'::text -$function$ -language sql; +$function$; select * from mr_outparam_succeed(int4multirange(int4range(1, 2))); create function mr_outparam_succeed2(i anymultirange, out r anyarray, out t text) +language sql as $function$ select ARRAY[upper($1)], 'foo'::text -$function$ -language sql; +$function$; select * from mr_outparam_succeed2(int4multirange(int4range(1, 2))); create function mr_outparam_succeed3(i anymultirange, out r anyrange, out t text) +language sql as $function$ select range_merge($1), 'foo'::text -$function$ -language sql; +$function$; select * from mr_outparam_succeed3(int4multirange(int4range(1, 2))); create function mr_outparam_succeed4(i anyrange, out r anymultirange, out t text) +language sql as $function$ select multirange($1), 'foo'::text -$function$ -language sql; +$function$; select * from mr_outparam_succeed4(int4range(1, 2)); create function mr_inoutparam_succeed(out i anyelement, inout r anymultirange) +language sql as $function$ select upper($1), $1 -$function$ -language sql; +$function$; select * from mr_inoutparam_succeed(int4multirange(int4range(1, 2))); @@ -1646,40 +1646,40 @@ returns table ( i anyelement, r anymultirange ) +language sql as $function$ select $1, $2 -$function$ -language sql; +$function$; select * from mr_table_succeed(123, int4multirange(int4range(1, 11))); create function mr_polymorphic(i anyrange) returns anymultirange +language plpgsql as $function$ begin return multirange($1); end; -$function$ -language plpgsql; +$function$; select mr_polymorphic(int4range(1, 4)); create function mr_outparam_fail(i anyelement, out r anymultirange, out t text) +language sql as $function$ select '[1,10]', 'foo' -$function$ -language sql; +$function$; create function mr_inoutparam_fail(inout i anyelement, out r anymultirange) +language sql as $function$ select $1, '[1,10]' -$function$ -language sql; +$function$; create function mr_table_fail(i anyelement) returns table ( i anyelement, r anymultirange ) +language sql as $function$ select $1, '[1,10]' -$function$ -language sql; +$function$; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__multirangetypes_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__multirangetypes_80.snap index 1fde04996..35f1657ca 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__multirangetypes_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__multirangetypes_80.snap @@ -1957,10 +1957,10 @@ drop role regress_multirange_owner; create function anyarray_anymultirange_func(a anyarray, r anymultirange) returns anyelement +language sql as $function$ select $1[1] + lower($2); -$function$ -language sql; +$function$; select anyarray_anymultirange_func( @@ -1978,24 +1978,24 @@ drop function anyarray_anymultirange_func(anyarray, anymultirange); create function bogus_func(anyelement) returns anymultirange +language sql as $function$ select int4multirange(int4range(1,10)) -$function$ -language sql; +$function$; create function bogus_func(int) returns anymultirange +language sql as $function$ select int4multirange(int4range(1,10)) -$function$ -language sql; +$function$; create function range_add_bounds(anymultirange) returns anyelement +language sql as $function$ select lower($1) + upper($1) -$function$ -language sql; +$function$; select range_add_bounds(int4multirange(int4range(1, 17))); @@ -2007,10 +2007,10 @@ multirangetypes_sql( b anyarray, out c anyelement ) +language sql as $function$ select upper($1) + $2[1] -$function$ -language sql; +$function$; select multirangetypes_sql(int4multirange(int4range(1, 10)), array[2, 20]); @@ -2022,10 +2022,10 @@ anycompatiblearray_anycompatiblemultirange_func( mr anycompatiblemultirange ) returns anycompatible +language sql as $function$ select $1[1] + lower($2); -$function$ -language sql; +$function$; select anycompatiblearray_anycompatiblemultirange_func( @@ -2056,10 +2056,10 @@ anycompatiblerange_anycompatiblemultirange_func( mr anycompatiblemultirange ) returns anycompatible +language sql as $function$ select lower($1) + lower($2); -$function$ -language sql; +$function$; select anycompatiblerange_anycompatiblemultirange_func( @@ -2080,10 +2080,10 @@ drop function create function bogus_func(anycompatible) returns anycompatiblerange +language sql as $function$ select int4range(1,10) -$function$ -language sql; +$function$; select array[nummultirange(numrange(1.1, 1.2)), @@ -2155,10 +2155,10 @@ mr_outparam_succeed( out r anymultirange, out t text ) +language sql as $function$ select $1, 'foo'::text -$function$ -language sql; +$function$; select * from mr_outparam_succeed(int4multirange(int4range(1, 2))); @@ -2168,10 +2168,10 @@ mr_outparam_succeed2( out r anyarray, out t text ) +language sql as $function$ select ARRAY[upper($1)], 'foo'::text -$function$ -language sql; +$function$; select * from mr_outparam_succeed2(int4multirange(int4range(1, 2))); @@ -2181,10 +2181,10 @@ mr_outparam_succeed3( out r anyrange, out t text ) +language sql as $function$ select range_merge($1), 'foo'::text -$function$ -language sql; +$function$; select * from mr_outparam_succeed3(int4multirange(int4range(1, 2))); @@ -2194,18 +2194,18 @@ mr_outparam_succeed4( out r anymultirange, out t text ) +language sql as $function$ select multirange($1), 'foo'::text -$function$ -language sql; +$function$; select * from mr_outparam_succeed4(int4range(1, 2)); create function mr_inoutparam_succeed(out i anyelement, inout r anymultirange) +language sql as $function$ select upper($1), $1 -$function$ -language sql; +$function$; select * from mr_inoutparam_succeed(int4multirange(int4range(1, 2))); @@ -2214,40 +2214,40 @@ returns table ( i anyelement, r anymultirange ) +language sql as $function$ select $1, $2 -$function$ -language sql; +$function$; select * from mr_table_succeed(123, int4multirange(int4range(1, 11))); create function mr_polymorphic(i anyrange) returns anymultirange +language plpgsql as $function$ begin return multirange($1); end; -$function$ -language plpgsql; +$function$; select mr_polymorphic(int4range(1, 4)); create function mr_outparam_fail(i anyelement, out r anymultirange, out t text) +language sql as $function$ select '[1,10]', 'foo' -$function$ -language sql; +$function$; create function mr_inoutparam_fail(inout i anyelement, out r anymultirange) +language sql as $function$ select $1, '[1,10]' -$function$ -language sql; +$function$; create function mr_table_fail(i anyelement) returns table ( i anyelement, r anymultirange ) +language sql as $function$ select $1, '[1,10]' -$function$ -language sql; +$function$; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__namespace_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__namespace_100.snap index 1fc9fbb14..c7d0c50ab 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__namespace_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__namespace_100.snap @@ -124,8 +124,8 @@ set search_path to test_maint_search_path; create function fn(int) returns int -immutable language plpgsql +immutable as $function$ BEGIN RAISE NOTICE 'current search_path: %', current_setting('search_path'); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__namespace_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__namespace_80.snap index 4e2d4d71c..b07ba6f64 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__namespace_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__namespace_80.snap @@ -124,8 +124,8 @@ set search_path to test_maint_search_path; create function fn(int) returns int -immutable language plpgsql +immutable as $function$ BEGIN RAISE NOTICE 'current search_path: %', current_setting('search_path'); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__partition_prune_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__partition_prune_100.snap index 8207cd5c6..008c68e3d 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__partition_prune_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__partition_prune_100.snap @@ -903,11 +903,11 @@ begin; create function list_part_fn(int) returns int +language plpgsql +stable as $function$ begin return $1; end; -$function$ -language plpgsql -stable; +$function$; select * from list_part where a = list_part_fn(1); @@ -2040,11 +2040,11 @@ deallocate update_part_abc_view; create function stable_one() returns int +language plpgsql +stable as $function$ begin return 1; end; -$function$ -language plpgsql -stable; +$function$; select * from part_abc_view; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__partition_prune_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__partition_prune_80.snap index 3ff73c04c..699dc624c 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__partition_prune_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__partition_prune_80.snap @@ -1039,11 +1039,11 @@ begin; create function list_part_fn(int) returns int +language plpgsql +stable as $function$ begin return $1; end; -$function$ -language plpgsql -stable; +$function$; select * from list_part where a = list_part_fn(1); @@ -2390,11 +2390,11 @@ deallocate update_part_abc_view; create function stable_one() returns int +language plpgsql +stable as $function$ begin return 1; end; -$function$ -language plpgsql -stable; +$function$; select * from part_abc_view; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__plancache_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__plancache_100.snap index dbdb1dfcb..afde0c746 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__plancache_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__plancache_100.snap @@ -52,6 +52,7 @@ execute vprep; create function cache_test(int) returns int +language plpgsql as $function$ declare total int; begin @@ -64,8 +65,7 @@ begin drop table t1; return total; end -$function$ -language plpgsql; +$function$; select cache_test(1); @@ -78,12 +78,12 @@ as select 2 + 2 as f1; create function cache_test_2() returns int +language plpgsql as $function$ begin return f1 from v1; end -$function$ -language plpgsql; +$function$; select cache_test_2(); @@ -147,6 +147,7 @@ execute p2; create function cachebug() returns void +language plpgsql as $function$ declare r int; begin @@ -157,8 +158,7 @@ begin raise notice '%', r; end loop; end -$function$ -language plpgsql; +$function$; select cachebug(); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__plancache_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__plancache_80.snap index 87f12d3a8..2ca36ffc0 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__plancache_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__plancache_80.snap @@ -52,6 +52,7 @@ execute vprep; create function cache_test(int) returns int +language plpgsql as $function$ declare total int; begin @@ -64,8 +65,7 @@ begin drop table t1; return total; end -$function$ -language plpgsql; +$function$; select cache_test(1); @@ -78,12 +78,12 @@ as select 2 + 2 as f1; create function cache_test_2() returns int +language plpgsql as $function$ begin return f1 from v1; end -$function$ -language plpgsql; +$function$; select cache_test_2(); @@ -149,6 +149,7 @@ execute p2; create function cachebug() returns void +language plpgsql as $function$ declare r int; begin @@ -159,8 +160,7 @@ begin raise notice '%', r; end loop; end -$function$ -language plpgsql; +$function$; select cachebug(); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__plpgsql_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__plpgsql_100.snap index edae00ded..c5c253586 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__plpgsql_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__plpgsql_100.snap @@ -88,6 +88,7 @@ create unique index "phone_name" on phone using btree (slotname bpchar_ops); create function tg_room_au() returns trigger +language plpgsql as $function$ begin if new.roomno != old.roomno then @@ -95,25 +96,25 @@ begin end if; return new; end; -$function$ -language plpgsql; +$function$; create trigger tg_room_au after update on room for each row execute function tg_room_au(); create function tg_room_ad() returns trigger +language plpgsql as $function$ begin delete from WSlot where roomno = old.roomno; return old; end; -$function$ -language plpgsql; +$function$; create trigger tg_room_ad after delete on room for each row execute function tg_room_ad(); create function tg_wslot_biu() returns trigger +language plpgsql as $function$ begin if count(*) = 0 from Room where roomno = new.roomno then @@ -121,8 +122,7 @@ begin end if; return new; end; -$function$ -language plpgsql; +$function$; create trigger tg_wslot_biu before insert or update @@ -132,6 +132,7 @@ execute function tg_wslot_biu(); create function tg_pfield_au() returns trigger +language plpgsql as $function$ begin if new.name != old.name then @@ -139,25 +140,25 @@ begin end if; return new; end; -$function$ -language plpgsql; +$function$; create trigger tg_pfield_au after update on pfield for each row execute function tg_pfield_au(); create function tg_pfield_ad() returns trigger +language plpgsql as $function$ begin delete from PSlot where pfname = old.name; return old; end; -$function$ -language plpgsql; +$function$; create trigger tg_pfield_ad after delete on pfield for each row execute function tg_pfield_ad(); create function tg_pslot_biu() returns trigger +language plpgsql as $function$ declare pfrec record; @@ -169,8 +170,7 @@ begin end if; return ps; end; -$function$ -language plpgsql; +$function$; create trigger tg_pslot_biu before insert or update @@ -180,6 +180,7 @@ execute function tg_pslot_biu(); create function tg_system_au() returns trigger +language plpgsql as $function$ begin if new.name != old.name then @@ -187,13 +188,13 @@ begin end if; return new; end; -$function$ -language plpgsql; +$function$; create trigger tg_system_au after update on system for each row execute function tg_system_au(); create function tg_iface_biu() returns trigger +language plpgsql as $function$ declare sname text; @@ -212,8 +213,7 @@ begin new.slotname := sname; return new; end; -$function$ -language plpgsql; +$function$; create trigger tg_iface_biu before insert or update @@ -223,6 +223,7 @@ execute function tg_iface_biu(); create function tg_hub_a() returns trigger +language plpgsql as $function$ declare hname text; @@ -244,8 +245,7 @@ begin return old; end if; end; -$function$ -language plpgsql; +$function$; create trigger tg_hub_a after insert or delete or update @@ -255,6 +255,7 @@ execute function tg_hub_a(); create function tg_hub_adjustslots(hname char, oldnslots int, newnslots int) returns int +language plpgsql as $function$ begin if newnslots = oldnslots then @@ -270,8 +271,7 @@ begin end loop; return 0; end -$function$ -language plpgsql; +$function$; comment on function tg_hub_adjustslots_wrong(char, int, int) is 'function with args'; @@ -281,6 +281,7 @@ comment on function tg_hub_adjustslots(char, int, int) is null; create function tg_hslot_biu() returns trigger +language plpgsql as $function$ declare sname text; @@ -308,8 +309,7 @@ begin new.slotname := sname; return new; end; -$function$ -language plpgsql; +$function$; create trigger tg_hslot_biu before insert or update @@ -319,6 +319,7 @@ execute function tg_hslot_biu(); create function tg_hslot_bd() returns trigger +language plpgsql as $function$ declare hubrec record; @@ -332,13 +333,13 @@ begin end if; raise exception 'no manual manipulation of HSlot'; end; -$function$ -language plpgsql; +$function$; create trigger tg_hslot_bd before delete on hslot for each row execute function tg_hslot_bd(); create function tg_chkslotname() returns trigger +language plpgsql as $function$ begin if substr(new.slotname, 1, 2) != tg_argv[0] then @@ -346,8 +347,7 @@ begin end if; return new; end; -$function$ -language plpgsql; +$function$; create trigger tg_chkslotname before insert @@ -381,6 +381,7 @@ execute function tg_chkslotname("PH"); create function tg_chkslotlink() returns trigger +language plpgsql as $function$ begin if new.slotlink isnull then @@ -388,8 +389,7 @@ begin end if; return new; end; -$function$ -language plpgsql; +$function$; create trigger tg_chkslotlink before insert or update @@ -423,6 +423,7 @@ execute function tg_chkslotlink(); create function tg_chkbacklink() returns trigger +language plpgsql as $function$ begin if new.backlink isnull then @@ -430,8 +431,7 @@ begin end if; return new; end; -$function$ -language plpgsql; +$function$; create trigger tg_chkbacklink before insert or update @@ -453,6 +453,7 @@ execute function tg_chkbacklink(); create function tg_pslot_bu() returns trigger +language plpgsql as $function$ begin if new.slotname != old.slotname then @@ -472,13 +473,13 @@ begin end if; return new; end; -$function$ -language plpgsql; +$function$; create trigger tg_pslot_bu before update on pslot for each row execute function tg_pslot_bu(); create function tg_wslot_bu() returns trigger +language plpgsql as $function$ begin if new.slotname != old.slotname then @@ -498,13 +499,13 @@ begin end if; return new; end; -$function$ -language plpgsql; +$function$; create trigger tg_wslot_bu before update on wslot for each row execute function tg_wslot_bu(); create function tg_pline_bu() returns trigger +language plpgsql as $function$ begin if new.slotname != old.slotname then @@ -524,13 +525,13 @@ begin end if; return new; end; -$function$ -language plpgsql; +$function$; create trigger tg_pline_bu before update on pline for each row execute function tg_pline_bu(); create function tg_iface_bu() returns trigger +language plpgsql as $function$ begin if new.slotname != old.slotname then @@ -550,13 +551,13 @@ begin end if; return new; end; -$function$ -language plpgsql; +$function$; create trigger tg_iface_bu before update on iface for each row execute function tg_iface_bu(); create function tg_hslot_bu() returns trigger +language plpgsql as $function$ begin if new.slotname != old.slotname or new.hubname != old.hubname then @@ -576,13 +577,13 @@ begin end if; return new; end; -$function$ -language plpgsql; +$function$; create trigger tg_hslot_bu before update on hslot for each row execute function tg_hslot_bu(); create function tg_phone_bu() returns trigger +language plpgsql as $function$ begin if new.slotname != old.slotname then @@ -600,13 +601,13 @@ begin end if; return new; end; -$function$ -language plpgsql; +$function$; create trigger tg_phone_bu before update on phone for each row execute function tg_phone_bu(); create function tg_backlink_a() returns trigger +language plpgsql as $function$ declare dummy integer; @@ -639,8 +640,7 @@ begin return old; end if; end; -$function$ -language plpgsql; +$function$; create trigger tg_backlink_a after insert or delete or update @@ -662,6 +662,7 @@ execute function tg_backlink_a("PL"); create function tg_backlink_set(myname char, blname char) returns int +language plpgsql as $function$ declare mytype char(2); @@ -710,11 +711,11 @@ begin end if; raise exception 'illegal backlink beginning with %', mytype; end; -$function$ -language plpgsql; +$function$; create function tg_backlink_unset(char, char) returns int +language plpgsql as $function$ declare myname alias for $1; @@ -754,11 +755,11 @@ begin return 0; end if; end -$function$ -language plpgsql; +$function$; create function tg_slotlink_a() returns trigger +language plpgsql as $function$ declare dummy integer; @@ -791,8 +792,7 @@ begin return old; end if; end; -$function$ -language plpgsql; +$function$; create trigger tg_slotlink_a after insert or delete or update @@ -826,6 +826,7 @@ execute function tg_slotlink_a("PH"); create function tg_slotlink_set(char, char) returns int +language plpgsql as $function$ declare myname alias for $1; @@ -904,11 +905,11 @@ begin end if; raise exception 'illegal slotlink beginning with %', mytype; end; -$function$ -language plpgsql; +$function$; create function tg_slotlink_unset(char, char) returns int +language plpgsql as $function$ declare myname alias for $1; @@ -968,11 +969,11 @@ begin return 0; end if; end; -$function$ -language plpgsql; +$function$; create function pslot_backlink_view(char) returns text +language plpgsql as $function$ <> declare @@ -1011,11 +1012,11 @@ begin end if; return rec.backlink; end; -$function$ -language plpgsql; +$function$; create function pslot_slotlink_view(char) returns text +language plpgsql as $function$ declare psrec record; @@ -1045,11 +1046,11 @@ begin end if; return psrec.slotlink; end; -$function$ -language plpgsql; +$function$; create function wslot_slotlink_view(char) returns text +language plpgsql as $function$ declare rec record; @@ -1093,8 +1094,7 @@ begin end if; return rec.slotlink; end; -$function$ -language plpgsql; +$function$; create view pfield_v1 as select @@ -1485,6 +1485,7 @@ insert into iface values ('IF', 'orion', 'ethernet_interface_name_too_long', '') create function recursion_test(int, int) returns text +language plpgsql as $function$ DECLARE rslt text; BEGIN @@ -1495,8 +1496,7 @@ BEGIN END IF; RETURN rslt; END; -$function$ -language plpgsql; +$function$; select recursion_test(4, 3); @@ -1504,6 +1504,7 @@ create table found_test_tbl (a int); create function test_found() returns boolean +language plpgsql as $function$ declare begin @@ -1538,8 +1539,7 @@ declare end if; return true; end; -$function$ -language plpgsql; +$function$; select test_found(); @@ -1547,6 +1547,7 @@ select * from found_test_tbl; create function test_table_func_rec() returns setof found_test_tbl +language plpgsql as $function$ DECLARE rec RECORD; @@ -1556,13 +1557,13 @@ BEGIN END LOOP; RETURN; END; -$function$ -language plpgsql; +$function$; select * from test_table_func_rec(); create function test_table_func_row() returns setof found_test_tbl +language plpgsql as $function$ DECLARE row found_test_tbl%ROWTYPE; @@ -1572,13 +1573,13 @@ BEGIN END LOOP; RETURN; END; -$function$ -language plpgsql; +$function$; select * from test_table_func_row(); create function test_ret_set_scalar(int, int) returns setof int +language plpgsql as $function$ DECLARE i int; @@ -1588,13 +1589,13 @@ BEGIN END LOOP; RETURN; END; -$function$ -language plpgsql; +$function$; select * from test_ret_set_scalar(1, 10); create function test_ret_set_rec_dyn(int) returns setof record +language plpgsql as $function$ DECLARE retval RECORD; @@ -1610,8 +1611,7 @@ BEGIN END IF; RETURN; END; -$function$ -language plpgsql; +$function$; select * from test_ret_set_rec_dyn(1500) as (a int, b int, c int); @@ -1619,6 +1619,7 @@ select * from test_ret_set_rec_dyn(5) as (a int, b numeric, c text); create function test_ret_rec_dyn(int) returns record +language plpgsql as $function$ DECLARE retval RECORD; @@ -1631,8 +1632,7 @@ BEGIN RETURN retval; END IF; END; -$function$ -language plpgsql; +$function$; select * from test_ret_rec_dyn(1500) as (a int, b int, c int); @@ -1640,12 +1640,12 @@ select * from test_ret_rec_dyn(5) as (a int, b numeric, c text); create function f1(x anyelement) returns anyelement +language plpgsql as $function$ begin return x + 1; end -$function$ -language plpgsql; +$function$; select f1(42) as int, f1(4.5) as num; @@ -1655,12 +1655,12 @@ drop function f1(anyelement); create function f1(x anyelement) returns anyarray +language plpgsql as $function$ begin return array[x + 1, x + 2]; end -$function$ -language plpgsql; +$function$; select f1(42) as int, f1(4.5) as num; @@ -1668,12 +1668,12 @@ drop function f1(anyelement); create function f1(x anyarray) returns anyelement +language plpgsql as $function$ begin return x[1]; end -$function$ -language plpgsql; +$function$; select f1(array[2, 4]) as int, f1(array[4.5, 7.7]) as num; @@ -1683,12 +1683,12 @@ drop function f1(anyarray); create function f1(x anyarray) returns anyarray +language plpgsql as $function$ begin return x; end -$function$ -language plpgsql; +$function$; select f1(array[2, 4]) as int, f1(array[4.5, 7.7]) as num; @@ -1698,21 +1698,21 @@ drop function f1(anyarray); create function f1(x anyelement) returns anyrange +language plpgsql as $function$ begin return array[x + 1, x + 2]; end -$function$ -language plpgsql; +$function$; create function f1(x anyrange) returns anyarray +language plpgsql as $function$ begin return array[lower(x), upper(x)]; end -$function$ -language plpgsql; +$function$; select f1(int4range(42, 49)) as int, f1(float8range(4.5, 7.8)) as num; @@ -1720,12 +1720,12 @@ drop function f1(anyrange); create function f1(x anycompatible, y anycompatible) returns anycompatiblearray +language plpgsql as $function$ begin return array[x, y]; end -$function$ -language plpgsql; +$function$; select f1(2, 4) as int, f1(2, 4.5) as num; @@ -1733,12 +1733,12 @@ drop function f1(anycompatible, anycompatible); create function f1(x anycompatiblerange, y anycompatible, z anycompatible) returns anycompatiblearray +language plpgsql as $function$ begin return array[lower(x), upper(x), y, z]; end -$function$ -language plpgsql; +$function$; select f1(int4range(42, 49), 11, cast(2 as smallint)) @@ -1752,21 +1752,21 @@ drop function f1(anycompatiblerange, anycompatible, anycompatible); create function f1(x anycompatible) returns anycompatiblerange +language plpgsql as $function$ begin return array[x + 1, x + 2]; end -$function$ -language plpgsql; +$function$; create function f1(x anycompatiblerange, y anycompatiblearray) returns anycompatiblerange +language plpgsql as $function$ begin return x; end -$function$ -language plpgsql; +$function$; select f1(int4range(42, 49), array[11]) as int, f1(float8range(4.5, 7.8), array[7]) as num; @@ -1781,13 +1781,13 @@ f1( out x anyarray, out y anycompatiblearray ) +language plpgsql as $function$ begin x := a || b; y := array[c, d]; end -$function$ -language plpgsql; +$function$; select x, pg_typeof(x), y, pg_typeof(y) from f1(11, array[1, 2], 42, 34.5); @@ -1801,33 +1801,33 @@ drop function f1(anyelement, anyarray, anycompatible, anycompatible); create function f1(in i int, out j int) returns int +language plpgsql as $function$ begin return i+1; end -$function$ -language plpgsql; +$function$; create function f1(in i int, out j int) +language plpgsql as $function$ begin j := i+1; return; end -$function$ -language plpgsql; +$function$; select f1(42); select * from f1(42); create or replace function f1(inout i int) +language plpgsql as $function$ begin i := i+1; end -$function$ -language plpgsql; +$function$; select f1(42); @@ -1837,6 +1837,7 @@ drop function f1(int); create function f1(in i int, out j int) returns setof int +language plpgsql as $function$ begin j := i+1; @@ -1845,22 +1846,21 @@ begin return next; return; end -$function$ -language plpgsql; +$function$; select * from f1(42); drop function f1(int); create function f1(in i int, out j int, out k text) +language plpgsql as $function$ begin j := i; j := j+1; k := 'foo'; end -$function$ -language plpgsql; +$function$; select f1(42); @@ -1870,6 +1870,7 @@ drop function f1(int); create function f1(in i int, out j int, out k text) returns setof record +language plpgsql as $function$ begin j := i+1; @@ -1879,22 +1880,21 @@ begin k := 'foot'; return next; end -$function$ -language plpgsql; +$function$; select * from f1(42); drop function f1(int); create function duplic(in i anyelement, out j anyelement, out k anyarray) +language plpgsql as $function$ begin j := i; k := array[j,j]; return; end -$function$ -language plpgsql; +$function$; select * from duplic(42); @@ -1903,14 +1903,14 @@ select * from duplic(cast('foo' as text)); drop function duplic(anyelement); create function duplic(in i anycompatiblerange, out j anycompatible, out k anycompatiblearray) +language plpgsql as $function$ begin j := lower(i); k := array[lower(i),upper(i)]; return; end -$function$ -language plpgsql; +$function$; select * from duplic(int4range(42, 49)); @@ -1925,6 +1925,7 @@ create table perform_test ( create function perform_simple_func(int) returns boolean +language plpgsql as $function$ BEGIN IF $1 < 20 THEN @@ -1934,11 +1935,11 @@ BEGIN RETURN FALSE; END IF; END; -$function$ -language plpgsql; +$function$; create function perform_test_func() returns void +language plpgsql as $function$ BEGIN IF FOUND then @@ -1959,8 +1960,7 @@ BEGIN RETURN; END; -$function$ -language plpgsql; +$function$; select perform_test_func(); @@ -1975,6 +1975,8 @@ create temporary table users ( create function sp_id_user(a_login text) returns int +language plpgsql +stable as $function$ declare x int; begin @@ -1982,9 +1984,7 @@ begin if found then return x; end if; return 0; end -$function$ -language plpgsql -stable; +$function$; insert into users values ('user1'); @@ -1994,6 +1994,7 @@ select sp_id_user('userx'); create function sp_add_user(a_login text) returns int +language plpgsql as $function$ declare my_id_user int; begin @@ -2008,8 +2009,7 @@ begin END IF; RETURN my_id_user; end -$function$ -language plpgsql; +$function$; select sp_add_user('user1'); @@ -2034,6 +2034,7 @@ copy rc_test from stdout; create function return_unnamed_refcursor() returns refcursor +language plpgsql as $function$ declare rc refcursor; @@ -2041,11 +2042,11 @@ begin open rc for select a from rc_test; return rc; end -$function$ -language plpgsql; +$function$; create function use_refcursor(rc refcursor) returns int +language plpgsql as $function$ declare rc refcursor; @@ -2055,30 +2056,29 @@ begin fetch next from rc into x; return x.a; end -$function$ -language plpgsql; +$function$; select use_refcursor(return_unnamed_refcursor()); create function return_refcursor(rc refcursor) returns refcursor +language plpgsql as $function$ begin open rc for select a from rc_test; return rc; end -$function$ -language plpgsql; +$function$; create function refcursor_test1(refcursor) returns refcursor +language plpgsql as $function$ begin perform return_refcursor($1); return $1; end -$function$ -language plpgsql; +$function$; begin; @@ -2096,6 +2096,7 @@ fetch next from test1; create function refcursor_test2(int, int) returns boolean +language plpgsql as $function$ declare c1 cursor (param1 int, param2 int) for select * from rc_test where a > param1 and b > param2; @@ -2110,8 +2111,7 @@ begin return false; end if; end -$function$ -language plpgsql; +$function$; select refcursor_test2(20000, 20000) as "Should be false", @@ -2119,6 +2119,7 @@ select create function constant_refcursor() returns refcursor +language plpgsql as $function$ declare rc constant refcursor; @@ -2126,13 +2127,13 @@ begin open rc for select a from rc_test; return rc; end -$function$ -language plpgsql; +$function$; select constant_refcursor(); create or replace function constant_refcursor() returns refcursor +language plpgsql as $function$ declare rc constant refcursor := 'my_cursor_name'; @@ -2140,13 +2141,13 @@ begin open rc for select a from rc_test; return rc; end -$function$ -language plpgsql; +$function$; select constant_refcursor(); create function namedparmcursor_test1(int, int) returns boolean +language plpgsql as $function$ declare c1 cursor (param1 int, param12 int) for select * from rc_test where a > param1 and b > param12; @@ -2161,8 +2162,7 @@ begin return false; end if; end -$function$ -language plpgsql; +$function$; select namedparmcursor_test1(20000, 20000) @@ -2171,6 +2171,7 @@ select create function namedparmcursor_test2(int, int) returns boolean +language plpgsql as $function$ declare c1 cursor (param1 int, param2 int) for select * from rc_test where a > param1 and b > param2; @@ -2185,35 +2186,35 @@ begin return false; end if; end -$function$ -language plpgsql; +$function$; select namedparmcursor_test2(20, 20); create function namedparmcursor_test3() returns void +language plpgsql as $function$ declare c1 cursor (param1 int, param2 int) for select * from rc_test where a > param1 and b > param2; begin open c1(param2 := 20, 21); end -$function$ -language plpgsql; +$function$; create function namedparmcursor_test4() returns void +language plpgsql as $function$ declare c1 cursor (param1 int, param2 int) for select * from rc_test where a > param1 and b > param2; begin open c1(20, param1 := 21); end -$function$ -language plpgsql; +$function$; create function namedparmcursor_test5() returns void +language plpgsql as $function$ declare c1 cursor (p1 int, p2 int) for @@ -2221,11 +2222,11 @@ declare begin open c1 (p2 := 77, p2 := 42); end -$function$ -language plpgsql; +$function$; create function namedparmcursor_test6() returns void +language plpgsql as $function$ declare c1 cursor (p1 int, p2 int) for @@ -2233,11 +2234,11 @@ declare begin open c1 (p2 := 77); end -$function$ -language plpgsql; +$function$; create function namedparmcursor_test7() returns void +language plpgsql as $function$ declare c1 cursor (p1 int, p2 int) for @@ -2245,13 +2246,13 @@ declare begin open c1 (p2 := 77, p1 := 42/0); end -$function$ -language plpgsql; +$function$; select namedparmcursor_test7(); create function namedparmcursor_test8() returns int +language plpgsql as $function$ declare c1 cursor (p1 int, p2 int) for @@ -2263,13 +2264,13 @@ begin fetch c1 into n; return n; end -$function$ -language plpgsql; +$function$; select namedparmcursor_test8(); create function namedparmcursor_test9(p1 int) returns int +language plpgsql as $function$ declare c1 cursor (p1 int, p2 int, debug int) for @@ -2283,45 +2284,45 @@ begin fetch c1 into n; return n; end -$function$ -language plpgsql; +$function$; select namedparmcursor_test9(6); create function raise_test1(int) returns int +language plpgsql as $function$ begin raise notice 'This message has too many parameters!', $1; return $1; end; -$function$ -language plpgsql; +$function$; create function raise_test2(int) returns int +language plpgsql as $function$ begin raise notice 'This message has too few parameters: %, %, %', $1, $1; return $1; end; -$function$ -language plpgsql; +$function$; create function raise_test3(int) returns int +language plpgsql as $function$ begin raise notice 'This message has no parameters (despite having %% signs in it)!'; return $1; end; -$function$ -language plpgsql; +$function$; select raise_test3(1); create function reraise_test() returns void +language plpgsql as $function$ BEGIN BEGIN @@ -2340,13 +2341,13 @@ EXCEPTION WHEN OTHERS THEN raise notice 'WRONG - exception % caught in outer block', sqlerrm; END; -$function$ -language plpgsql; +$function$; select reraise_test(); create function bad_sql1() returns int +language plpgsql as $function$ declare a int; begin @@ -2355,11 +2356,11 @@ begin a := 10; return a; end -$function$ -language plpgsql; +$function$; create function bad_sql2() returns int +language plpgsql as $function$ declare r record; begin @@ -2368,46 +2369,45 @@ begin end loop; return 5; end; -$function$ -language plpgsql; +$function$; create function missing_return_expr() returns int +language plpgsql as $function$ begin return ; end; -$function$ -language plpgsql; +$function$; create function void_return_expr() returns void +language plpgsql as $function$ begin return 5; end; -$function$ -language plpgsql; +$function$; create function void_return_expr() returns void +language plpgsql as $function$ begin perform 2+2; end; -$function$ -language plpgsql; +$function$; select void_return_expr(); create function missing_return_expr() returns int +language plpgsql as $function$ begin perform 2+2; end; -$function$ -language plpgsql; +$function$; select missing_return_expr(); @@ -2424,6 +2424,7 @@ create type eitype as (i int, y int); create or replace function execute_into_test(varchar) returns record +language plpgsql as $function$ declare _r record; @@ -2443,8 +2444,7 @@ begin execute 'select 1,2' into _v; return _v; end; -$function$ -language plpgsql; +$function$; select execute_into_test('eifoo'); @@ -2454,17 +2454,18 @@ drop type eitype cascade; create function excpt_test1() returns void +language plpgsql as $function$ begin raise notice '% %', sqlstate, sqlerrm; end; -$function$ -language plpgsql; +$function$; select excpt_test1(); create function excpt_test2() returns void +language plpgsql as $function$ begin begin @@ -2473,13 +2474,13 @@ begin end; end; end; -$function$ -language plpgsql; +$function$; select excpt_test2(); create function excpt_test3() returns void +language plpgsql as $function$ begin begin @@ -2499,20 +2500,19 @@ begin raise notice '% %', sqlstate, sqlerrm; end; end; -$function$ -language plpgsql; +$function$; select excpt_test3(); create function excpt_test4() returns text +language plpgsql as $function$ begin begin perform 1/0; exception when others then return sqlerrm; end; end; -$function$ -language plpgsql; +$function$; select excpt_test4(); @@ -2526,6 +2526,7 @@ drop function excpt_test4(); create function raise_exprs() returns void +language plpgsql as $function$ declare a integer[] = '{10,20,30}'; @@ -2535,8 +2536,7 @@ begin i := 2; raise notice '%; %; %; %; %; %', a, a[i], c, (select c || 'abc'), row(10,'aaa',NULL,30), NULL; end; -$function$ -language plpgsql; +$function$; select raise_exprs(); @@ -2544,6 +2544,7 @@ drop function raise_exprs(); create function multi_datum_use(p1 int) returns boolean +language plpgsql as $function$ declare x int; @@ -2552,8 +2553,7 @@ begin select into x,y unique1/p1, unique1/$1 from tenk1 group by unique1/p1; return x = y; end -$function$ -language plpgsql; +$function$; select multi_datum_use(42); @@ -2566,6 +2566,7 @@ insert into foo values (1, 2), (3, 4); create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; begin @@ -2573,13 +2574,13 @@ begin insert into foo values(5,6) returning * into x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; begin @@ -2587,13 +2588,13 @@ begin insert into foo values(7,8),(9,10) returning * into x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; begin @@ -2601,13 +2602,13 @@ begin execute 'insert into foo values(5,6) returning *' into x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; begin @@ -2615,8 +2616,7 @@ begin execute 'insert into foo values(7,8),(9,10) returning *' into x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); @@ -2624,6 +2624,7 @@ select * from foo; create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; begin @@ -2631,13 +2632,13 @@ begin select * from foo where f1 = 3 into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; begin @@ -2645,13 +2646,13 @@ begin select * from foo where f1 = 0 into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; begin @@ -2659,13 +2660,13 @@ begin select * from foo where f1 > 3 into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; begin @@ -2673,13 +2674,13 @@ begin execute 'select * from foo where f1 = 3' into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; begin @@ -2687,13 +2688,13 @@ begin execute 'select * from foo where f1 = 0' into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; begin @@ -2701,8 +2702,7 @@ begin execute 'select * from foo where f1 > 3' into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); @@ -2712,6 +2712,7 @@ set plpgsql.print_strict_params = 'true'; create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; @@ -2722,13 +2723,13 @@ begin select * from foo where f1 = p1 and f1::text = p3 into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; @@ -2739,13 +2740,13 @@ begin select * from foo where f1 = p1 and f1::text = p3 into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; @@ -2756,13 +2757,13 @@ begin select * from foo where f1 > p1 or f1::text = p3 into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; begin @@ -2770,13 +2771,13 @@ begin select * from foo where f1 > 3 into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; begin @@ -2784,13 +2785,13 @@ begin execute 'select * from foo where f1 = $1 or f1::text = $2' using 0, 'foo' into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; begin @@ -2798,13 +2799,13 @@ begin execute 'select * from foo where f1 > $1' using 1 into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; begin @@ -2812,13 +2813,13 @@ begin execute 'select * from foo where f1 > 3' into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); create or replace function stricttest() returns void +language plpgsql as $function$ -- override the global #print_strict_params off @@ -2831,8 +2832,7 @@ begin select * from foo where f1 > p1 or f1::text = p3 into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); @@ -2840,6 +2840,7 @@ reset plpgsql.print_strict_params; create or replace function stricttest() returns void +language plpgsql as $function$ -- override the global #print_strict_params on @@ -2852,8 +2853,7 @@ begin select * from foo where f1 > p1 or f1::text = p3 into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); @@ -2871,14 +2871,14 @@ create or replace function shadowtest(in1 int) returns table ( out1 int ) +language plpgsql as $function$ declare in1 int; out1 int; begin end -$function$ -language plpgsql; +$function$; select shadowtest(1); @@ -2890,14 +2890,14 @@ create or replace function shadowtest(in1 int) returns table ( out1 int ) +language plpgsql as $function$ declare in1 int; out1 int; begin end -$function$ -language plpgsql; +$function$; select shadowtest(1); @@ -2905,6 +2905,7 @@ drop function shadowtest(int); create or replace function shadowtest() returns void +language plpgsql as $function$ declare f1 int; @@ -2914,13 +2915,13 @@ begin begin end; end -$function$ -language plpgsql; +$function$; drop function shadowtest(); create or replace function shadowtest(in1 int) returns void +language plpgsql as $function$ declare in1 int; @@ -2930,21 +2931,20 @@ begin begin end; end -$function$ -language plpgsql; +$function$; drop function shadowtest(int); create or replace function shadowtest() returns void +language plpgsql as $function$ declare f1 int; c1 cursor (f1 int) for select 1; begin end -$function$ -language plpgsql; +$function$; drop function shadowtest(); @@ -2952,10 +2952,10 @@ set plpgsql.extra_errors = shadowed_variables; create or replace function shadowtest(f1 int) returns boolean +language plpgsql as $function$ declare f1 int; begin return 1; end -$function$ -language plpgsql; +$function$; select shadowtest(1); @@ -2965,10 +2965,10 @@ reset plpgsql.extra_warnings; create or replace function shadowtest(f1 int) returns boolean +language plpgsql as $function$ declare f1 int; begin return 1; end -$function$ -language plpgsql; +$function$; select shadowtest(1); @@ -3075,6 +3075,7 @@ reset plpgsql.extra_warnings; create function sc_test() returns setof int +language plpgsql as $function$ declare c scroll cursor for select f1 from int4_tbl; @@ -3088,13 +3089,13 @@ begin end loop; close c; end; -$function$ -language plpgsql; +$function$; select * from sc_test(); create or replace function sc_test() returns setof int +language plpgsql as $function$ declare c no scroll cursor for select f1 from int4_tbl; @@ -3108,13 +3109,13 @@ begin end loop; close c; end; -$function$ -language plpgsql; +$function$; select * from sc_test(); create or replace function sc_test() returns setof int +language plpgsql as $function$ declare c refcursor; @@ -3128,13 +3129,13 @@ begin end loop; close c; end; -$function$ -language plpgsql; +$function$; select * from sc_test(); create or replace function sc_test() returns setof int +language plpgsql as $function$ declare c refcursor; @@ -3148,13 +3149,13 @@ begin end loop; close c; end; -$function$ -language plpgsql; +$function$; select * from sc_test(); create or replace function sc_test() returns setof int +language plpgsql as $function$ declare c refcursor; @@ -3169,13 +3170,13 @@ begin end loop; close c; end; -$function$ -language plpgsql; +$function$; select * from sc_test(); create or replace function sc_test() returns setof int +language plpgsql as $function$ declare c cursor for select * from generate_series(1, 10); @@ -3194,13 +3195,13 @@ begin end loop; close c; end; -$function$ -language plpgsql; +$function$; select * from sc_test(); create or replace function sc_test() returns setof int +language plpgsql as $function$ declare c cursor for select * from generate_series(1, 10); @@ -3214,8 +3215,7 @@ begin end if; close c; end; -$function$ -language plpgsql; +$function$; select * from sc_test(); @@ -3223,6 +3223,7 @@ drop function sc_test(); create function pl_qual_names(param1 int) returns void +language plpgsql as $function$ <> declare @@ -3238,8 +3239,7 @@ begin raise notice 'innerblock.param1 = %', innerblock.param1; end; end; -$function$ -language plpgsql; +$function$; select pl_qual_names(42); @@ -3247,6 +3247,7 @@ drop function pl_qual_names(int); create function ret_query1(out int, out int) returns setof record +language plpgsql as $function$ begin $1 := -1; @@ -3255,8 +3256,7 @@ begin return query select x + 1, x * 10 from generate_series(0, 10) s (x); return next; end; -$function$ -language plpgsql; +$function$; select * from ret_query1(); @@ -3264,18 +3264,19 @@ create type record_type as (x text, y int, z boolean); create or replace function ret_query2(lim int) returns setof record_type +language plpgsql as $function$ begin return query select fipshash(s.x::text), s.x, s.x > 0 from generate_series(-8, lim) s (x) where s.x % 2 = 0; end; -$function$ -language plpgsql; +$function$; select * from ret_query2(8); create function exc_using(int, text) returns int +language plpgsql as $function$ declare i int; begin @@ -3285,8 +3286,7 @@ begin execute 'select $2 + $2*3 + length($1)' into i using $2,$1; return i; end -$function$ -language plpgsql; +$function$; select exc_using(5, 'foobar'); @@ -3294,6 +3294,7 @@ drop function exc_using(int, text); create or replace function exc_using(int) returns void +language plpgsql as $function$ declare c refcursor; @@ -3308,8 +3309,7 @@ begin close c; return; end; -$function$ -language plpgsql; +$function$; select exc_using(5); @@ -3317,6 +3317,7 @@ drop function exc_using(int); create or replace function forc01() returns void +language plpgsql as $function$ declare c cursor(r1 integer, r2 integer) @@ -3355,8 +3356,7 @@ begin raise notice 'after loop, c2 = %', c2; return; end; -$function$ -language plpgsql; +$function$; select forc01(); @@ -3364,6 +3364,7 @@ create temporary table forc_test as select n as i, n as j from generate_series(1 create or replace function forc01() returns void +language plpgsql as $function$ declare c cursor for select * from forc_test; @@ -3373,8 +3374,7 @@ begin update forc_test set i = i * 100, j = r.j * 2 where current of c; end loop; end; -$function$ -language plpgsql; +$function$; select forc01(); @@ -3382,6 +3382,7 @@ select * from forc_test; create or replace function forc01() returns void +language plpgsql as $function$ declare c refcursor := 'fooled_ya'; @@ -3395,8 +3396,7 @@ begin update forc_test set i = i * 100, j = r.j * 2 where current of c; end loop; end; -$function$ -language plpgsql; +$function$; select forc01(); @@ -3423,6 +3423,7 @@ $do$; create or replace function forc_bad() returns void +language plpgsql as $function$ declare c refcursor; @@ -3431,18 +3432,17 @@ begin raise notice '%', r.i; end loop; end; -$function$ -language plpgsql; +$function$; create or replace function return_dquery() returns setof int +language plpgsql as $function$ begin return query execute 'select * from (values(10),(20)) f'; return query execute 'select * from (values($1),($2)) f' using 40,50; end; -$function$ -language plpgsql; +$function$; select * from return_dquery(); @@ -3459,13 +3459,13 @@ insert into tabwithcols values (10, 20, 30, 40), (50, 60, 70, 80); create or replace function returnqueryf() returns setof tabwithcols +language plpgsql as $function$ begin return query select * from tabwithcols; return query execute 'select * from tabwithcols'; end; -$function$ -language plpgsql; +$function$; select * from returnqueryf(); @@ -3492,6 +3492,7 @@ create type compostype as (x int, y varchar); create or replace function compos() returns compostype +language plpgsql as $function$ declare v compostype; @@ -3499,13 +3500,13 @@ begin v := (1, 'hello'); return v; end; -$function$ -language plpgsql; +$function$; select compos(); create or replace function compos() returns compostype +language plpgsql as $function$ declare v record; @@ -3513,41 +3514,40 @@ begin v := (1, 'hello'::varchar); return v; end; -$function$ -language plpgsql; +$function$; select compos(); create or replace function compos() returns compostype +language plpgsql as $function$ begin return (1, 'hello'::varchar); end; -$function$ -language plpgsql; +$function$; select compos(); create or replace function compos() returns compostype +language plpgsql as $function$ begin return (1, 'hello'); end; -$function$ -language plpgsql; +$function$; select compos(); create or replace function compos() returns compostype +language plpgsql as $function$ begin return (1, 'hello')::compostype; end; -$function$ -language plpgsql; +$function$; select compos(); @@ -3555,6 +3555,7 @@ drop function compos(); create or replace function composrec() returns record +language plpgsql as $function$ declare v record; @@ -3562,19 +3563,18 @@ begin v := (1, 'hello'); return v; end; -$function$ -language plpgsql; +$function$; select composrec(); create or replace function composrec() returns record +language plpgsql as $function$ begin return (1, 'hello'); end; -$function$ -language plpgsql; +$function$; select composrec(); @@ -3582,6 +3582,7 @@ drop function composrec(); create or replace function compos() returns setof compostype +language plpgsql as $function$ begin for i in 1..3 @@ -3591,8 +3592,7 @@ begin return next null::compostype; return next (2, 'goodbye')::compostype; end; -$function$ -language plpgsql; +$function$; select * from compos(); @@ -3600,24 +3600,24 @@ drop function compos(); create or replace function compos() returns compostype +language plpgsql as $function$ begin return 1 + 1; end; -$function$ -language plpgsql; +$function$; select compos(); create or replace function compos() returns compostype +language plpgsql as $function$ declare x int := 42; begin return x; end; -$function$ -language plpgsql; +$function$; select * from compos(); @@ -3625,6 +3625,7 @@ drop function compos(); create or replace function compos() returns int +language plpgsql as $function$ declare v compostype; @@ -3632,19 +3633,18 @@ begin v := (1, 'hello'); return v; end; -$function$ -language plpgsql; +$function$; select compos(); create or replace function compos() returns int +language plpgsql as $function$ begin return (1, 'hello')::compostype; end; -$function$ -language plpgsql; +$function$; select compos(); @@ -3654,6 +3654,7 @@ drop type compostype; create or replace function raise_test() returns void +language plpgsql as $function$ begin raise notice '% % %', 1, 2, 3 @@ -3661,13 +3662,13 @@ begin raise '% % %', 1, 2, 3 using errcode = 'division_by_zero', detail = 'some detail info'; end; -$function$ -language plpgsql; +$function$; select raise_test(); create or replace function raise_test() returns void +language plpgsql as $function$ begin raise 'check me' @@ -3677,13 +3678,13 @@ begin raise notice 'SQLSTATE: % SQLERRM: %', sqlstate, sqlerrm; raise; end; -$function$ -language plpgsql; +$function$; select raise_test(); create or replace function raise_test() returns void +language plpgsql as $function$ begin raise 'check me' @@ -3693,13 +3694,13 @@ begin raise notice 'SQLSTATE: % SQLERRM: %', sqlstate, sqlerrm; raise; end; -$function$ -language plpgsql; +$function$; select raise_test(); create or replace function raise_test() returns void +language plpgsql as $function$ begin raise 'check me' @@ -3709,13 +3710,13 @@ begin raise notice 'SQLSTATE: % SQLERRM: %', sqlstate, sqlerrm; raise; end; -$function$ -language plpgsql; +$function$; select raise_test(); create or replace function raise_test() returns void +language plpgsql as $function$ begin raise division_by_zero using detail = 'some detail info'; @@ -3724,112 +3725,112 @@ begin raise notice 'SQLSTATE: % SQLERRM: %', sqlstate, sqlerrm; raise; end; -$function$ -language plpgsql; +$function$; select raise_test(); create or replace function raise_test() returns void +language plpgsql as $function$ begin raise division_by_zero; end; -$function$ -language plpgsql; +$function$; select raise_test(); create or replace function raise_test() returns void +language plpgsql as $function$ begin raise sqlstate '1234F'; end; -$function$ -language plpgsql; +$function$; select raise_test(); create or replace function raise_test() returns void +language plpgsql as $function$ begin raise division_by_zero using message = 'custom' || ' message'; end; -$function$ -language plpgsql; +$function$; select raise_test(); create or replace function raise_test() returns void +language plpgsql as $function$ begin raise using message = 'custom' || ' message', errcode = '22012'; end; -$function$ -language plpgsql; +$function$; select raise_test(); create or replace function raise_test() returns void +language plpgsql as $function$ begin raise notice 'some message' using message = 'custom' || ' message', errcode = '22012'; end; -$function$ -language plpgsql; +$function$; select raise_test(); create or replace function raise_test() returns void +language plpgsql as $function$ begin raise division_by_zero using message = 'custom' || ' message', errcode = '22012'; end; -$function$ -language plpgsql; +$function$; select raise_test(); create or replace function raise_test() returns void +language plpgsql as $function$ begin raise; end; -$function$ -language plpgsql; +$function$; select raise_test(); create function zero_divide() returns int +language plpgsql +parallel SAFE as $function$ declare v int := 0; begin return 10 / v; end; -$function$ -language plpgsql -parallel SAFE; +$function$; create or replace function raise_test() returns void +language plpgsql as $function$ begin raise exception 'custom exception' using detail = 'some detail of custom exception', hint = 'some hint related to custom exception'; end; -$function$ -language plpgsql; +$function$; create function stacked_diagnostics_test() returns void +language plpgsql as $function$ declare _sqlstate text; _message text; @@ -3844,13 +3845,13 @@ exception when others then raise notice 'sqlstate: %, message: %, context: [%]', _sqlstate, _message, replace(_context, E'\n', ' <- '); end; -$function$ -language plpgsql; +$function$; select stacked_diagnostics_test(); create or replace function stacked_diagnostics_test() returns void +language plpgsql as $function$ declare _detail text; _hint text; @@ -3864,13 +3865,13 @@ exception when others then _hint = pg_exception_hint; raise notice 'message: %, detail: %, hint: %', _message, _detail, _hint; end; -$function$ -language plpgsql; +$function$; select stacked_diagnostics_test(); create or replace function stacked_diagnostics_test() returns void +language plpgsql as $function$ declare _detail text; _hint text; @@ -3882,8 +3883,7 @@ begin _hint = pg_exception_hint; raise notice 'message: %, detail: %, hint: %', _message, _detail, _hint; end; -$function$ -language plpgsql; +$function$; select stacked_diagnostics_test(); @@ -3891,6 +3891,8 @@ drop function stacked_diagnostics_test(); create function error_trap_test() returns text +language plpgsql +parallel SAFE as $function$ begin perform zero_divide(); @@ -3898,9 +3900,7 @@ begin exception when division_by_zero then return 'division_by_zero detected'; end; -$function$ -language plpgsql -parallel SAFE; +$function$; set debug_parallel_query = 'on'; @@ -3916,6 +3916,7 @@ drop function zero_divide(); create or replace function raise_test() returns void +language plpgsql as $function$ begin perform 1/0; @@ -3924,8 +3925,7 @@ exception raise notice using message = sqlstate; raise sqlstate '22012' using message = 'substitute message'; end; -$function$ -language plpgsql; +$function$; select raise_test(); @@ -3933,6 +3933,7 @@ drop function raise_test(); create or replace function stacked_diagnostics_test() returns void +language plpgsql as $function$ declare _column_name text; _constraint_name text; @@ -3956,8 +3957,7 @@ exception when others then raise notice 'column %, constraint %, type %, table %, schema %', _column_name, _constraint_name, _datatype_name, _table_name, _schema_name; end; -$function$ -language plpgsql; +$function$; select stacked_diagnostics_test(); @@ -3965,13 +3965,13 @@ drop function stacked_diagnostics_test(); create or replace function vari(variadic int[]) returns void +language plpgsql as $function$ begin for i in array_lower($1,1)..array_upper($1,1) loop raise notice '%', $1[i]; end loop; end; -$function$ -language plpgsql; +$function$; select vari(1, 2, 3, 4, 5); @@ -3983,6 +3983,9 @@ drop function vari(int[]); create or replace function pleast(variadic numeric[]) returns numeric +language plpgsql +immutable +strict as $function$ declare aux numeric = $1[array_lower($1,1)]; begin @@ -3991,10 +3994,7 @@ begin end loop; return aux; end; -$function$ -language plpgsql -immutable -strict; +$function$; select pleast(10, 1, 2, 3, -16); @@ -4006,15 +4006,15 @@ select pleast(10, 20, -1.0); create or replace function pleast(numeric) returns numeric +language plpgsql +immutable +strict as $function$ begin raise notice 'non-variadic function called'; return $1; end; -$function$ -language plpgsql -immutable -strict; +$function$; select pleast(10); @@ -4027,14 +4027,14 @@ returns table ( a int, b int ) +language plpgsql +immutable +strict as $function$ begin return query select $1, $1+i from generate_series(1,5) g(i); end; -$function$ -language plpgsql -immutable -strict; +$function$; select * from tftest(10); @@ -4043,6 +4043,9 @@ returns table ( a int, b int ) +language plpgsql +immutable +strict as $function$ begin a := a1; b := a1 + 1; @@ -4050,10 +4053,7 @@ begin a := a1 * 10; b := a1 * 10 + 1; return next; end; -$function$ -language plpgsql -immutable -strict; +$function$; select * from tftest(10); @@ -4061,6 +4061,7 @@ drop function tftest(int); create function rttest() returns setof int +language plpgsql as $function$ declare rc int; begin @@ -4077,30 +4078,29 @@ begin get diagnostics rc = row_count; raise notice '% %', found, rc; end; -$function$ -language plpgsql; +$function$; select * from rttest(); create or replace function rttest() returns setof int +language plpgsql as $function$ begin return query select 10 into no_such_table; end; -$function$ -language plpgsql; +$function$; select * from rttest(); create or replace function rttest() returns setof int +language plpgsql as $function$ begin return query execute 'select 10 into no_such_table'; end; -$function$ -language plpgsql; +$function$; select * from rttest(); @@ -4110,6 +4110,7 @@ drop function rttest(); create function leaker_1(fail boolean) returns int +language plpgsql as $function$ DECLARE v_var INTEGER; @@ -4121,11 +4122,11 @@ BEGIN END; RETURN 1; END; -$function$ -language plpgsql; +$function$; create function leaker_2(fail boolean, out error_code int, out new_id int) returns record +language plpgsql as $function$ BEGIN IF fail THEN @@ -4135,8 +4136,7 @@ BEGIN new_id := 1; RETURN; END; -$function$ -language plpgsql; +$function$; select * from leaker_1(false); @@ -4148,6 +4148,7 @@ drop function leaker_2(boolean); create function nonsimple_expr_test() returns text[] +language plpgsql as $function$ DECLARE arr text[]; @@ -4161,8 +4162,7 @@ BEGIN arr[(SELECT i)][(SELECT i+1)] := (SELECT lr); RETURN arr; END; -$function$ -language plpgsql; +$function$; select nonsimple_expr_test(); @@ -4170,6 +4170,7 @@ drop function nonsimple_expr_test(); create function nonsimple_expr_test() returns int +language plpgsql as $function$ declare i integer NOT NULL := 0; @@ -4182,8 +4183,7 @@ begin end; return i; end; -$function$ -language plpgsql; +$function$; select nonsimple_expr_test(); @@ -4191,6 +4191,7 @@ drop function nonsimple_expr_test(); create function recurse(double precision) returns double precision +language plpgsql as $function$ begin if ($1 > 0) then @@ -4199,15 +4200,14 @@ begin return $1; end if; end; -$function$ -language plpgsql; +$function$; create function sql_recurse(double precision) returns double precision +language sql as $function$ select recurse($1) limit 1; -$function$ -language sql; +$function$; select recurse(10); @@ -4247,23 +4247,23 @@ drop function error1(text); create function sql_to_date(int) returns date -as $function$ -select $1::text::date -$function$ language sql immutable -strict; +strict +as $function$ +select $1::text::date +$function$; create cast (int as date) with function sql_to_date(int) as assignment; create function cast_invoker(int) returns date +language plpgsql as $function$ begin return $1; end -$function$ -language plpgsql; +$function$; select cast_invoker(20150717); @@ -4326,25 +4326,25 @@ set standard_conforming_strings = off; create or replace function strtest() returns text +language plpgsql as $function$ begin raise notice 'foo\\bar\041baz'; return 'foo\\bar\041baz'; end -$function$ -language plpgsql; +$function$; select strtest(); create or replace function strtest() returns text +language plpgsql as $function$ begin raise notice E'foo\\bar\041baz'; return E'foo\\bar\041baz'; end -$function$ -language plpgsql; +$function$; select strtest(); @@ -4352,25 +4352,25 @@ set standard_conforming_strings = 'on'; create or replace function strtest() returns text +language plpgsql as $function$ begin raise notice 'foo\\bar\041baz\'; return 'foo\\bar\041baz\'; end -$function$ -language plpgsql; +$function$; select strtest(); create or replace function strtest() returns text +language plpgsql as $function$ begin raise notice E'foo\\bar\041baz'; return E'foo\\bar\041baz'; end -$function$ -language plpgsql; +$function$; select strtest(); @@ -4467,6 +4467,7 @@ set plpgsql.variable_conflict = error; create function conflict_test() returns setof int8_tbl +language plpgsql as $function$ declare r record; q1 bigint := 42; @@ -4475,13 +4476,13 @@ begin return next r; end loop; end; -$function$ -language plpgsql; +$function$; select * from conflict_test(); create or replace function conflict_test() returns setof int8_tbl +language plpgsql as $function$ #variable_conflict use_variable declare r record; @@ -4491,13 +4492,13 @@ begin return next r; end loop; end; -$function$ -language plpgsql; +$function$; select * from conflict_test(); create or replace function conflict_test() returns setof int8_tbl +language plpgsql as $function$ #variable_conflict use_column declare r record; @@ -4507,8 +4508,7 @@ begin return next r; end loop; end; -$function$ -language plpgsql; +$function$; select * from conflict_test(); @@ -4516,6 +4516,7 @@ drop function conflict_test(); create function unreserved_test() returns int +language plpgsql as $function$ declare forward int := 21; @@ -4523,13 +4524,13 @@ begin forward := forward * 2; return forward; end -$function$ -language plpgsql; +$function$; select unreserved_test(); create or replace function unreserved_test() returns int +language plpgsql as $function$ declare return int := 42; @@ -4537,13 +4538,13 @@ begin return := return + 1; return return; end -$function$ -language plpgsql; +$function$; select unreserved_test(); create or replace function unreserved_test() returns int +language plpgsql as $function$ declare comment int := 21; @@ -4552,8 +4553,7 @@ begin comment on function unreserved_test() is 'this is a test'; return comment; end -$function$ -language plpgsql; +$function$; select unreserved_test(); @@ -4563,6 +4563,7 @@ drop function unreserved_test(); create function foreach_test(anyarray) returns void +language plpgsql as $function$ declare x int; begin @@ -4571,8 +4572,7 @@ begin raise notice '%', x; end loop; end; -$function$ -language plpgsql; +$function$; select foreach_test(array[1, 2, 3, 4]); @@ -4580,6 +4580,7 @@ select foreach_test(array[array[1, 2], array[3, 4]]); create or replace function foreach_test(anyarray) returns void +language plpgsql as $function$ declare x int; begin @@ -4588,8 +4589,7 @@ begin raise notice '%', x; end loop; end; -$function$ -language plpgsql; +$function$; select foreach_test(array[1, 2, 3, 4]); @@ -4597,6 +4597,7 @@ select foreach_test(array[array[1, 2], array[3, 4]]); create or replace function foreach_test(anyarray) returns void +language plpgsql as $function$ declare x int[]; begin @@ -4605,8 +4606,7 @@ begin raise notice '%', x; end loop; end; -$function$ -language plpgsql; +$function$; select foreach_test(array[1, 2, 3, 4]); @@ -4614,6 +4614,7 @@ select foreach_test(array[array[1, 2], array[3, 4]]); create or replace function foreach_test(anyarray) returns void +language plpgsql as $function$ declare x int[]; begin @@ -4622,8 +4623,7 @@ begin raise notice '%', x; end loop; end; -$function$ -language plpgsql; +$function$; select foreach_test(array[1, 2, 3, 4]); @@ -4635,6 +4635,7 @@ create type xy_tuple as (x int, y int); create or replace function foreach_test(anyarray) returns void +language plpgsql as $function$ declare r record; begin @@ -4643,8 +4644,7 @@ begin raise notice '%', r; end loop; end; -$function$ -language plpgsql; +$function$; select foreach_test(cast(array[(10, 20), (40, 69), (35, 78)] as xy_tuple[])); @@ -4657,6 +4657,7 @@ select create or replace function foreach_test(anyarray) returns void +language plpgsql as $function$ declare x int; y int; begin @@ -4665,8 +4666,7 @@ begin raise notice 'x = %, y = %', x, y; end loop; end; -$function$ -language plpgsql; +$function$; select foreach_test(cast(array[(10, 20), (40, 69), (35, 78)] as xy_tuple[])); @@ -4679,6 +4679,7 @@ select create or replace function foreach_test(anyarray) returns void +language plpgsql as $function$ declare x xy_tuple[]; begin @@ -4687,8 +4688,7 @@ begin raise notice '%', x; end loop; end; -$function$ -language plpgsql; +$function$; select foreach_test(cast(array[(10, 20), (40, 69), (35, 78)] as xy_tuple[])); @@ -4758,19 +4758,19 @@ drop function testoa(int, int, int); create function returns_rw_array(int) returns int[] language plpgsql +stable as $function$ declare r int[]; begin r := array[$1, $1]; return r; end; -$function$ -stable; +$function$; create function consumes_rw_array(int[]) returns int language plpgsql +stable as $function$ begin return $1[1]; end; -$function$ -stable; +$function$; select consumes_rw_array(returns_rw_array(42)); @@ -4807,6 +4807,7 @@ $do$; create function inner_func(int) returns int +language plpgsql as $function$ declare _context text; begin @@ -4818,11 +4819,11 @@ begin raise notice 'lets make sure we didnt break anything'; return 2 * $1; end; -$function$ -language plpgsql; +$function$; create or replace function outer_func(int) returns int +language plpgsql as $function$ declare myresult int; @@ -4832,11 +4833,11 @@ begin raise notice 'inner_func() done'; return myresult; end; -$function$ -language plpgsql; +$function$; create or replace function outer_outer_func(int) returns int +language plpgsql as $function$ declare myresult int; @@ -4846,8 +4847,7 @@ begin raise notice 'outer_func() done'; return myresult; end; -$function$ -language plpgsql; +$function$; select outer_outer_func(10); @@ -4861,6 +4861,7 @@ drop function inner_func(int); create function inner_func(int) returns int +language plpgsql as $function$ declare _context text; @@ -4880,11 +4881,11 @@ begin raise notice 'lets make sure we didnt break anything'; return 2 * $1; end; -$function$ -language plpgsql; +$function$; create or replace function outer_func(int) returns int +language plpgsql as $function$ declare myresult int; @@ -4894,11 +4895,11 @@ begin raise notice 'inner_func() done'; return myresult; end; -$function$ -language plpgsql; +$function$; create or replace function outer_outer_func(int) returns int +language plpgsql as $function$ declare myresult int; @@ -4908,8 +4909,7 @@ begin raise notice 'outer_func() done'; return myresult; end; -$function$ -language plpgsql; +$function$; select outer_outer_func(10); @@ -4923,6 +4923,7 @@ drop function inner_func(int); create function current_function(text) returns regprocedure +language plpgsql as $function$ declare fn_oid regprocedure; @@ -4930,8 +4931,7 @@ begin get diagnostics fn_oid = pg_routine_oid; return fn_oid; end; -$function$ -language plpgsql; +$function$; select current_function('foo'); @@ -4998,11 +4998,11 @@ $do$; create function plpgsql_domain_check(val int) returns boolean +language plpgsql +immutable as $function$ begin return val > 0; end -$function$ -language plpgsql -immutable; +$function$; create domain plpgsql_domain as int check (plpgsql_domain_check(value)); @@ -5024,11 +5024,11 @@ $do$; create function plpgsql_arr_domain_check(val int[]) returns boolean +language plpgsql +immutable as $function$ begin return val[1] > 0; end -$function$ -language plpgsql -immutable; +$function$; create domain plpgsql_arr_domain as int[] check (plpgsql_arr_domain_check(value)); @@ -5400,6 +5400,7 @@ insert into partitioned_table values (2, 'Row 2'); create or replace function get_from_partitioned_table(partitioned_table.a%type) returns partitioned_table +language plpgsql as $function$ DECLARE a_val partitioned_table.a%TYPE; @@ -5409,13 +5410,13 @@ BEGIN SELECT * INTO result FROM partitioned_table WHERE a = a_val; RETURN result; END; -$function$ -language plpgsql; +$function$; select * from get_from_partitioned_table(1) as t; create or replace function list_partitioned_table() returns setof public.partitioned_table.a%type +language plpgsql as $function$ DECLARE row public.partitioned_table%ROWTYPE; @@ -5427,17 +5428,16 @@ BEGIN END LOOP; RETURN; END; -$function$ -language plpgsql; +$function$; select * from list_partitioned_table() as t; create function fx(x wslot) returns void +language plpgsql as $function$ BEGIN GET DIAGNOSTICS x = ROW_COUNT; RETURN; END; -$function$ -language plpgsql; +$function$; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__plpgsql_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__plpgsql_80.snap index b0a918640..3de95207c 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__plpgsql_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__plpgsql_80.snap @@ -88,6 +88,7 @@ create unique index "phone_name" on phone using btree (slotname bpchar_ops); create function tg_room_au() returns trigger +language plpgsql as $function$ begin if new.roomno != old.roomno then @@ -95,8 +96,7 @@ begin end if; return new; end; -$function$ -language plpgsql; +$function$; create trigger tg_room_au after update @@ -106,13 +106,13 @@ execute function tg_room_au(); create function tg_room_ad() returns trigger +language plpgsql as $function$ begin delete from WSlot where roomno = old.roomno; return old; end; -$function$ -language plpgsql; +$function$; create trigger tg_room_ad after delete @@ -122,6 +122,7 @@ execute function tg_room_ad(); create function tg_wslot_biu() returns trigger +language plpgsql as $function$ begin if count(*) = 0 from Room where roomno = new.roomno then @@ -129,8 +130,7 @@ begin end if; return new; end; -$function$ -language plpgsql; +$function$; create trigger tg_wslot_biu before insert or update @@ -140,6 +140,7 @@ execute function tg_wslot_biu(); create function tg_pfield_au() returns trigger +language plpgsql as $function$ begin if new.name != old.name then @@ -147,8 +148,7 @@ begin end if; return new; end; -$function$ -language plpgsql; +$function$; create trigger tg_pfield_au after update @@ -158,13 +158,13 @@ execute function tg_pfield_au(); create function tg_pfield_ad() returns trigger +language plpgsql as $function$ begin delete from PSlot where pfname = old.name; return old; end; -$function$ -language plpgsql; +$function$; create trigger tg_pfield_ad after delete @@ -174,6 +174,7 @@ execute function tg_pfield_ad(); create function tg_pslot_biu() returns trigger +language plpgsql as $function$ declare pfrec record; @@ -185,8 +186,7 @@ begin end if; return ps; end; -$function$ -language plpgsql; +$function$; create trigger tg_pslot_biu before insert or update @@ -196,6 +196,7 @@ execute function tg_pslot_biu(); create function tg_system_au() returns trigger +language plpgsql as $function$ begin if new.name != old.name then @@ -203,8 +204,7 @@ begin end if; return new; end; -$function$ -language plpgsql; +$function$; create trigger tg_system_au after update @@ -214,6 +214,7 @@ execute function tg_system_au(); create function tg_iface_biu() returns trigger +language plpgsql as $function$ declare sname text; @@ -232,8 +233,7 @@ begin new.slotname := sname; return new; end; -$function$ -language plpgsql; +$function$; create trigger tg_iface_biu before insert or update @@ -243,6 +243,7 @@ execute function tg_iface_biu(); create function tg_hub_a() returns trigger +language plpgsql as $function$ declare hname text; @@ -264,8 +265,7 @@ begin return old; end if; end; -$function$ -language plpgsql; +$function$; create trigger tg_hub_a after insert or delete or update @@ -275,6 +275,7 @@ execute function tg_hub_a(); create function tg_hub_adjustslots(hname char, oldnslots int, newnslots int) returns int +language plpgsql as $function$ begin if newnslots = oldnslots then @@ -290,8 +291,7 @@ begin end loop; return 0; end -$function$ -language plpgsql; +$function$; comment on function tg_hub_adjustslots_wrong(char, int, int) is 'function with args'; @@ -301,6 +301,7 @@ comment on function tg_hub_adjustslots(char, int, int) is null; create function tg_hslot_biu() returns trigger +language plpgsql as $function$ declare sname text; @@ -328,8 +329,7 @@ begin new.slotname := sname; return new; end; -$function$ -language plpgsql; +$function$; create trigger tg_hslot_biu before insert or update @@ -339,6 +339,7 @@ execute function tg_hslot_biu(); create function tg_hslot_bd() returns trigger +language plpgsql as $function$ declare hubrec record; @@ -352,8 +353,7 @@ begin end if; raise exception 'no manual manipulation of HSlot'; end; -$function$ -language plpgsql; +$function$; create trigger tg_hslot_bd before delete @@ -363,6 +363,7 @@ execute function tg_hslot_bd(); create function tg_chkslotname() returns trigger +language plpgsql as $function$ begin if substr(new.slotname, 1, 2) != tg_argv[0] then @@ -370,8 +371,7 @@ begin end if; return new; end; -$function$ -language plpgsql; +$function$; create trigger tg_chkslotname before insert @@ -405,6 +405,7 @@ execute function tg_chkslotname("PH"); create function tg_chkslotlink() returns trigger +language plpgsql as $function$ begin if new.slotlink isnull then @@ -412,8 +413,7 @@ begin end if; return new; end; -$function$ -language plpgsql; +$function$; create trigger tg_chkslotlink before insert or update @@ -447,6 +447,7 @@ execute function tg_chkslotlink(); create function tg_chkbacklink() returns trigger +language plpgsql as $function$ begin if new.backlink isnull then @@ -454,8 +455,7 @@ begin end if; return new; end; -$function$ -language plpgsql; +$function$; create trigger tg_chkbacklink before insert or update @@ -477,6 +477,7 @@ execute function tg_chkbacklink(); create function tg_pslot_bu() returns trigger +language plpgsql as $function$ begin if new.slotname != old.slotname then @@ -496,8 +497,7 @@ begin end if; return new; end; -$function$ -language plpgsql; +$function$; create trigger tg_pslot_bu before update @@ -507,6 +507,7 @@ execute function tg_pslot_bu(); create function tg_wslot_bu() returns trigger +language plpgsql as $function$ begin if new.slotname != old.slotname then @@ -526,8 +527,7 @@ begin end if; return new; end; -$function$ -language plpgsql; +$function$; create trigger tg_wslot_bu before update @@ -537,6 +537,7 @@ execute function tg_wslot_bu(); create function tg_pline_bu() returns trigger +language plpgsql as $function$ begin if new.slotname != old.slotname then @@ -556,8 +557,7 @@ begin end if; return new; end; -$function$ -language plpgsql; +$function$; create trigger tg_pline_bu before update @@ -567,6 +567,7 @@ execute function tg_pline_bu(); create function tg_iface_bu() returns trigger +language plpgsql as $function$ begin if new.slotname != old.slotname then @@ -586,8 +587,7 @@ begin end if; return new; end; -$function$ -language plpgsql; +$function$; create trigger tg_iface_bu before update @@ -597,6 +597,7 @@ execute function tg_iface_bu(); create function tg_hslot_bu() returns trigger +language plpgsql as $function$ begin if new.slotname != old.slotname or new.hubname != old.hubname then @@ -616,8 +617,7 @@ begin end if; return new; end; -$function$ -language plpgsql; +$function$; create trigger tg_hslot_bu before update @@ -627,6 +627,7 @@ execute function tg_hslot_bu(); create function tg_phone_bu() returns trigger +language plpgsql as $function$ begin if new.slotname != old.slotname then @@ -644,8 +645,7 @@ begin end if; return new; end; -$function$ -language plpgsql; +$function$; create trigger tg_phone_bu before update @@ -655,6 +655,7 @@ execute function tg_phone_bu(); create function tg_backlink_a() returns trigger +language plpgsql as $function$ declare dummy integer; @@ -687,8 +688,7 @@ begin return old; end if; end; -$function$ -language plpgsql; +$function$; create trigger tg_backlink_a after insert or delete or update @@ -710,6 +710,7 @@ execute function tg_backlink_a("PL"); create function tg_backlink_set(myname char, blname char) returns int +language plpgsql as $function$ declare mytype char(2); @@ -758,11 +759,11 @@ begin end if; raise exception 'illegal backlink beginning with %', mytype; end; -$function$ -language plpgsql; +$function$; create function tg_backlink_unset(char, char) returns int +language plpgsql as $function$ declare myname alias for $1; @@ -802,11 +803,11 @@ begin return 0; end if; end -$function$ -language plpgsql; +$function$; create function tg_slotlink_a() returns trigger +language plpgsql as $function$ declare dummy integer; @@ -839,8 +840,7 @@ begin return old; end if; end; -$function$ -language plpgsql; +$function$; create trigger tg_slotlink_a after insert or delete or update @@ -874,6 +874,7 @@ execute function tg_slotlink_a("PH"); create function tg_slotlink_set(char, char) returns int +language plpgsql as $function$ declare myname alias for $1; @@ -952,11 +953,11 @@ begin end if; raise exception 'illegal slotlink beginning with %', mytype; end; -$function$ -language plpgsql; +$function$; create function tg_slotlink_unset(char, char) returns int +language plpgsql as $function$ declare myname alias for $1; @@ -1016,11 +1017,11 @@ begin return 0; end if; end; -$function$ -language plpgsql; +$function$; create function pslot_backlink_view(char) returns text +language plpgsql as $function$ <> declare @@ -1059,11 +1060,11 @@ begin end if; return rec.backlink; end; -$function$ -language plpgsql; +$function$; create function pslot_slotlink_view(char) returns text +language plpgsql as $function$ declare psrec record; @@ -1093,11 +1094,11 @@ begin end if; return psrec.slotlink; end; -$function$ -language plpgsql; +$function$; create function wslot_slotlink_view(char) returns text +language plpgsql as $function$ declare rec record; @@ -1141,8 +1142,7 @@ begin end if; return rec.slotlink; end; -$function$ -language plpgsql; +$function$; create view pfield_v1 as select @@ -1542,6 +1542,7 @@ values create function recursion_test(int, int) returns text +language plpgsql as $function$ DECLARE rslt text; BEGIN @@ -1552,8 +1553,7 @@ BEGIN END IF; RETURN rslt; END; -$function$ -language plpgsql; +$function$; select recursion_test(4, 3); @@ -1561,6 +1561,7 @@ create table found_test_tbl (a int); create function test_found() returns boolean +language plpgsql as $function$ declare begin @@ -1595,8 +1596,7 @@ declare end if; return true; end; -$function$ -language plpgsql; +$function$; select test_found(); @@ -1604,6 +1604,7 @@ select * from found_test_tbl; create function test_table_func_rec() returns setof found_test_tbl +language plpgsql as $function$ DECLARE rec RECORD; @@ -1613,13 +1614,13 @@ BEGIN END LOOP; RETURN; END; -$function$ -language plpgsql; +$function$; select * from test_table_func_rec(); create function test_table_func_row() returns setof found_test_tbl +language plpgsql as $function$ DECLARE row found_test_tbl%ROWTYPE; @@ -1629,13 +1630,13 @@ BEGIN END LOOP; RETURN; END; -$function$ -language plpgsql; +$function$; select * from test_table_func_row(); create function test_ret_set_scalar(int, int) returns setof int +language plpgsql as $function$ DECLARE i int; @@ -1645,13 +1646,13 @@ BEGIN END LOOP; RETURN; END; -$function$ -language plpgsql; +$function$; select * from test_ret_set_scalar(1, 10); create function test_ret_set_rec_dyn(int) returns setof record +language plpgsql as $function$ DECLARE retval RECORD; @@ -1667,8 +1668,7 @@ BEGIN END IF; RETURN; END; -$function$ -language plpgsql; +$function$; select * from test_ret_set_rec_dyn(1500) as (a int, b int, c int); @@ -1676,6 +1676,7 @@ select * from test_ret_set_rec_dyn(5) as (a int, b numeric, c text); create function test_ret_rec_dyn(int) returns record +language plpgsql as $function$ DECLARE retval RECORD; @@ -1688,8 +1689,7 @@ BEGIN RETURN retval; END IF; END; -$function$ -language plpgsql; +$function$; select * from test_ret_rec_dyn(1500) as (a int, b int, c int); @@ -1697,12 +1697,12 @@ select * from test_ret_rec_dyn(5) as (a int, b numeric, c text); create function f1(x anyelement) returns anyelement +language plpgsql as $function$ begin return x + 1; end -$function$ -language plpgsql; +$function$; select f1(42) as int, f1(4.5) as num; @@ -1712,12 +1712,12 @@ drop function f1(anyelement); create function f1(x anyelement) returns anyarray +language plpgsql as $function$ begin return array[x + 1, x + 2]; end -$function$ -language plpgsql; +$function$; select f1(42) as int, f1(4.5) as num; @@ -1725,12 +1725,12 @@ drop function f1(anyelement); create function f1(x anyarray) returns anyelement +language plpgsql as $function$ begin return x[1]; end -$function$ -language plpgsql; +$function$; select f1(array[2, 4]) as int, f1(array[4.5, 7.7]) as num; @@ -1740,12 +1740,12 @@ drop function f1(anyarray); create function f1(x anyarray) returns anyarray +language plpgsql as $function$ begin return x; end -$function$ -language plpgsql; +$function$; select f1(array[2, 4]) as int, f1(array[4.5, 7.7]) as num; @@ -1755,21 +1755,21 @@ drop function f1(anyarray); create function f1(x anyelement) returns anyrange +language plpgsql as $function$ begin return array[x + 1, x + 2]; end -$function$ -language plpgsql; +$function$; create function f1(x anyrange) returns anyarray +language plpgsql as $function$ begin return array[lower(x), upper(x)]; end -$function$ -language plpgsql; +$function$; select f1(int4range(42, 49)) as int, f1(float8range(4.5, 7.8)) as num; @@ -1777,12 +1777,12 @@ drop function f1(anyrange); create function f1(x anycompatible, y anycompatible) returns anycompatiblearray +language plpgsql as $function$ begin return array[x, y]; end -$function$ -language plpgsql; +$function$; select f1(2, 4) as int, f1(2, 4.5) as num; @@ -1790,12 +1790,12 @@ drop function f1(anycompatible, anycompatible); create function f1(x anycompatiblerange, y anycompatible, z anycompatible) returns anycompatiblearray +language plpgsql as $function$ begin return array[lower(x), upper(x), y, z]; end -$function$ -language plpgsql; +$function$; select f1( @@ -1817,21 +1817,21 @@ drop function f1(anycompatiblerange, anycompatible, anycompatible); create function f1(x anycompatible) returns anycompatiblerange +language plpgsql as $function$ begin return array[x + 1, x + 2]; end -$function$ -language plpgsql; +$function$; create function f1(x anycompatiblerange, y anycompatiblearray) returns anycompatiblerange +language plpgsql as $function$ begin return x; end -$function$ -language plpgsql; +$function$; select f1(int4range(42, 49), array[11]) as int, @@ -1849,13 +1849,13 @@ f1( out x anyarray, out y anycompatiblearray ) +language plpgsql as $function$ begin x := a || b; y := array[c, d]; end -$function$ -language plpgsql; +$function$; select x, pg_typeof(x), y, pg_typeof(y) from f1(11, array[1, 2], 42, 34.5); @@ -1886,33 +1886,33 @@ drop function f1(anyelement, anyarray, anycompatible, anycompatible); create function f1(in i int, out j int) returns int +language plpgsql as $function$ begin return i+1; end -$function$ -language plpgsql; +$function$; create function f1(in i int, out j int) +language plpgsql as $function$ begin j := i+1; return; end -$function$ -language plpgsql; +$function$; select f1(42); select * from f1(42); create or replace function f1(inout i int) +language plpgsql as $function$ begin i := i+1; end -$function$ -language plpgsql; +$function$; select f1(42); @@ -1922,6 +1922,7 @@ drop function f1(int); create function f1(in i int, out j int) returns setof int +language plpgsql as $function$ begin j := i+1; @@ -1930,22 +1931,21 @@ begin return next; return; end -$function$ -language plpgsql; +$function$; select * from f1(42); drop function f1(int); create function f1(in i int, out j int, out k text) +language plpgsql as $function$ begin j := i; j := j+1; k := 'foo'; end -$function$ -language plpgsql; +$function$; select f1(42); @@ -1955,6 +1955,7 @@ drop function f1(int); create function f1(in i int, out j int, out k text) returns setof record +language plpgsql as $function$ begin j := i+1; @@ -1964,22 +1965,21 @@ begin k := 'foot'; return next; end -$function$ -language plpgsql; +$function$; select * from f1(42); drop function f1(int); create function duplic(in i anyelement, out j anyelement, out k anyarray) +language plpgsql as $function$ begin j := i; k := array[j,j]; return; end -$function$ -language plpgsql; +$function$; select * from duplic(42); @@ -1993,14 +1993,14 @@ duplic( out j anycompatible, out k anycompatiblearray ) +language plpgsql as $function$ begin j := lower(i); k := array[lower(i),upper(i)]; return; end -$function$ -language plpgsql; +$function$; select * from duplic(int4range(42, 49)); @@ -2015,6 +2015,7 @@ create table perform_test ( create function perform_simple_func(int) returns boolean +language plpgsql as $function$ BEGIN IF $1 < 20 THEN @@ -2024,11 +2025,11 @@ BEGIN RETURN FALSE; END IF; END; -$function$ -language plpgsql; +$function$; create function perform_test_func() returns void +language plpgsql as $function$ BEGIN IF FOUND then @@ -2049,8 +2050,7 @@ BEGIN RETURN; END; -$function$ -language plpgsql; +$function$; select perform_test_func(); @@ -2065,6 +2065,8 @@ create temporary table users ( create function sp_id_user(a_login text) returns int +language plpgsql +stable as $function$ declare x int; begin @@ -2072,9 +2074,7 @@ begin if found then return x; end if; return 0; end -$function$ -language plpgsql -stable; +$function$; insert into users values ('user1'); @@ -2084,6 +2084,7 @@ select sp_id_user('userx'); create function sp_add_user(a_login text) returns int +language plpgsql as $function$ declare my_id_user int; begin @@ -2098,8 +2099,7 @@ begin END IF; RETURN my_id_user; end -$function$ -language plpgsql; +$function$; select sp_add_user('user1'); @@ -2124,6 +2124,7 @@ copy rc_test from stdout; create function return_unnamed_refcursor() returns refcursor +language plpgsql as $function$ declare rc refcursor; @@ -2131,11 +2132,11 @@ begin open rc for select a from rc_test; return rc; end -$function$ -language plpgsql; +$function$; create function use_refcursor(rc refcursor) returns int +language plpgsql as $function$ declare rc refcursor; @@ -2145,30 +2146,29 @@ begin fetch next from rc into x; return x.a; end -$function$ -language plpgsql; +$function$; select use_refcursor(return_unnamed_refcursor()); create function return_refcursor(rc refcursor) returns refcursor +language plpgsql as $function$ begin open rc for select a from rc_test; return rc; end -$function$ -language plpgsql; +$function$; create function refcursor_test1(refcursor) returns refcursor +language plpgsql as $function$ begin perform return_refcursor($1); return $1; end -$function$ -language plpgsql; +$function$; begin; @@ -2186,6 +2186,7 @@ fetch next from test1; create function refcursor_test2(int, int) returns boolean +language plpgsql as $function$ declare c1 cursor (param1 int, param2 int) for select * from rc_test where a > param1 and b > param2; @@ -2200,8 +2201,7 @@ begin return false; end if; end -$function$ -language plpgsql; +$function$; select refcursor_test2(20000, 20000) @@ -2211,6 +2211,7 @@ select create function constant_refcursor() returns refcursor +language plpgsql as $function$ declare rc constant refcursor; @@ -2218,13 +2219,13 @@ begin open rc for select a from rc_test; return rc; end -$function$ -language plpgsql; +$function$; select constant_refcursor(); create or replace function constant_refcursor() returns refcursor +language plpgsql as $function$ declare rc constant refcursor := 'my_cursor_name'; @@ -2232,13 +2233,13 @@ begin open rc for select a from rc_test; return rc; end -$function$ -language plpgsql; +$function$; select constant_refcursor(); create function namedparmcursor_test1(int, int) returns boolean +language plpgsql as $function$ declare c1 cursor (param1 int, param12 int) for select * from rc_test where a > param1 and b > param12; @@ -2253,8 +2254,7 @@ begin return false; end if; end -$function$ -language plpgsql; +$function$; select namedparmcursor_test1(20000, 20000) @@ -2264,6 +2264,7 @@ select create function namedparmcursor_test2(int, int) returns boolean +language plpgsql as $function$ declare c1 cursor (param1 int, param2 int) for select * from rc_test where a > param1 and b > param2; @@ -2278,35 +2279,35 @@ begin return false; end if; end -$function$ -language plpgsql; +$function$; select namedparmcursor_test2(20, 20); create function namedparmcursor_test3() returns void +language plpgsql as $function$ declare c1 cursor (param1 int, param2 int) for select * from rc_test where a > param1 and b > param2; begin open c1(param2 := 20, 21); end -$function$ -language plpgsql; +$function$; create function namedparmcursor_test4() returns void +language plpgsql as $function$ declare c1 cursor (param1 int, param2 int) for select * from rc_test where a > param1 and b > param2; begin open c1(20, param1 := 21); end -$function$ -language plpgsql; +$function$; create function namedparmcursor_test5() returns void +language plpgsql as $function$ declare c1 cursor (p1 int, p2 int) for @@ -2314,11 +2315,11 @@ declare begin open c1 (p2 := 77, p2 := 42); end -$function$ -language plpgsql; +$function$; create function namedparmcursor_test6() returns void +language plpgsql as $function$ declare c1 cursor (p1 int, p2 int) for @@ -2326,11 +2327,11 @@ declare begin open c1 (p2 := 77); end -$function$ -language plpgsql; +$function$; create function namedparmcursor_test7() returns void +language plpgsql as $function$ declare c1 cursor (p1 int, p2 int) for @@ -2338,13 +2339,13 @@ declare begin open c1 (p2 := 77, p1 := 42/0); end -$function$ -language plpgsql; +$function$; select namedparmcursor_test7(); create function namedparmcursor_test8() returns int +language plpgsql as $function$ declare c1 cursor (p1 int, p2 int) for @@ -2356,13 +2357,13 @@ begin fetch c1 into n; return n; end -$function$ -language plpgsql; +$function$; select namedparmcursor_test8(); create function namedparmcursor_test9(p1 int) returns int +language plpgsql as $function$ declare c1 cursor (p1 int, p2 int, debug int) for @@ -2376,45 +2377,45 @@ begin fetch c1 into n; return n; end -$function$ -language plpgsql; +$function$; select namedparmcursor_test9(6); create function raise_test1(int) returns int +language plpgsql as $function$ begin raise notice 'This message has too many parameters!', $1; return $1; end; -$function$ -language plpgsql; +$function$; create function raise_test2(int) returns int +language plpgsql as $function$ begin raise notice 'This message has too few parameters: %, %, %', $1, $1; return $1; end; -$function$ -language plpgsql; +$function$; create function raise_test3(int) returns int +language plpgsql as $function$ begin raise notice 'This message has no parameters (despite having %% signs in it)!'; return $1; end; -$function$ -language plpgsql; +$function$; select raise_test3(1); create function reraise_test() returns void +language plpgsql as $function$ BEGIN BEGIN @@ -2433,13 +2434,13 @@ EXCEPTION WHEN OTHERS THEN raise notice 'WRONG - exception % caught in outer block', sqlerrm; END; -$function$ -language plpgsql; +$function$; select reraise_test(); create function bad_sql1() returns int +language plpgsql as $function$ declare a int; begin @@ -2448,11 +2449,11 @@ begin a := 10; return a; end -$function$ -language plpgsql; +$function$; create function bad_sql2() returns int +language plpgsql as $function$ declare r record; begin @@ -2461,46 +2462,45 @@ begin end loop; return 5; end; -$function$ -language plpgsql; +$function$; create function missing_return_expr() returns int +language plpgsql as $function$ begin return ; end; -$function$ -language plpgsql; +$function$; create function void_return_expr() returns void +language plpgsql as $function$ begin return 5; end; -$function$ -language plpgsql; +$function$; create function void_return_expr() returns void +language plpgsql as $function$ begin perform 2+2; end; -$function$ -language plpgsql; +$function$; select void_return_expr(); create function missing_return_expr() returns int +language plpgsql as $function$ begin perform 2+2; end; -$function$ -language plpgsql; +$function$; select missing_return_expr(); @@ -2517,6 +2517,7 @@ create type eitype as (i int, y int); create or replace function execute_into_test(varchar) returns record +language plpgsql as $function$ declare _r record; @@ -2536,8 +2537,7 @@ begin execute 'select 1,2' into _v; return _v; end; -$function$ -language plpgsql; +$function$; select execute_into_test('eifoo'); @@ -2547,17 +2547,18 @@ drop type eitype cascade; create function excpt_test1() returns void +language plpgsql as $function$ begin raise notice '% %', sqlstate, sqlerrm; end; -$function$ -language plpgsql; +$function$; select excpt_test1(); create function excpt_test2() returns void +language plpgsql as $function$ begin begin @@ -2566,13 +2567,13 @@ begin end; end; end; -$function$ -language plpgsql; +$function$; select excpt_test2(); create function excpt_test3() returns void +language plpgsql as $function$ begin begin @@ -2592,20 +2593,19 @@ begin raise notice '% %', sqlstate, sqlerrm; end; end; -$function$ -language plpgsql; +$function$; select excpt_test3(); create function excpt_test4() returns text +language plpgsql as $function$ begin begin perform 1/0; exception when others then return sqlerrm; end; end; -$function$ -language plpgsql; +$function$; select excpt_test4(); @@ -2619,6 +2619,7 @@ drop function excpt_test4(); create function raise_exprs() returns void +language plpgsql as $function$ declare a integer[] = '{10,20,30}'; @@ -2628,8 +2629,7 @@ begin i := 2; raise notice '%; %; %; %; %; %', a, a[i], c, (select c || 'abc'), row(10,'aaa',NULL,30), NULL; end; -$function$ -language plpgsql; +$function$; select raise_exprs(); @@ -2637,6 +2637,7 @@ drop function raise_exprs(); create function multi_datum_use(p1 int) returns boolean +language plpgsql as $function$ declare x int; @@ -2645,8 +2646,7 @@ begin select into x,y unique1/p1, unique1/$1 from tenk1 group by unique1/p1; return x = y; end -$function$ -language plpgsql; +$function$; select multi_datum_use(42); @@ -2659,6 +2659,7 @@ insert into foo values (1, 2), (3, 4); create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; begin @@ -2666,13 +2667,13 @@ begin insert into foo values(5,6) returning * into x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; begin @@ -2680,13 +2681,13 @@ begin insert into foo values(7,8),(9,10) returning * into x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; begin @@ -2694,13 +2695,13 @@ begin execute 'insert into foo values(5,6) returning *' into x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; begin @@ -2708,8 +2709,7 @@ begin execute 'insert into foo values(7,8),(9,10) returning *' into x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); @@ -2717,6 +2717,7 @@ select * from foo; create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; begin @@ -2724,13 +2725,13 @@ begin select * from foo where f1 = 3 into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; begin @@ -2738,13 +2739,13 @@ begin select * from foo where f1 = 0 into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; begin @@ -2752,13 +2753,13 @@ begin select * from foo where f1 > 3 into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; begin @@ -2766,13 +2767,13 @@ begin execute 'select * from foo where f1 = 3' into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; begin @@ -2780,13 +2781,13 @@ begin execute 'select * from foo where f1 = 0' into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; begin @@ -2794,8 +2795,7 @@ begin execute 'select * from foo where f1 > 3' into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); @@ -2805,6 +2805,7 @@ set plpgsql.print_strict_params = 'true'; create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; @@ -2815,13 +2816,13 @@ begin select * from foo where f1 = p1 and f1::text = p3 into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; @@ -2832,13 +2833,13 @@ begin select * from foo where f1 = p1 and f1::text = p3 into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; @@ -2849,13 +2850,13 @@ begin select * from foo where f1 > p1 or f1::text = p3 into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; begin @@ -2863,13 +2864,13 @@ begin select * from foo where f1 > 3 into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; begin @@ -2877,13 +2878,13 @@ begin execute 'select * from foo where f1 = $1 or f1::text = $2' using 0, 'foo' into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; begin @@ -2891,13 +2892,13 @@ begin execute 'select * from foo where f1 > $1' using 1 into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); create or replace function stricttest() returns void +language plpgsql as $function$ declare x record; begin @@ -2905,13 +2906,13 @@ begin execute 'select * from foo where f1 > 3' into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); create or replace function stricttest() returns void +language plpgsql as $function$ -- override the global #print_strict_params off @@ -2924,8 +2925,7 @@ begin select * from foo where f1 > p1 or f1::text = p3 into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); @@ -2933,6 +2933,7 @@ reset plpgsql.print_strict_params; create or replace function stricttest() returns void +language plpgsql as $function$ -- override the global #print_strict_params on @@ -2945,8 +2946,7 @@ begin select * from foo where f1 > p1 or f1::text = p3 into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end -$function$ -language plpgsql; +$function$; select stricttest(); @@ -2964,14 +2964,14 @@ create or replace function shadowtest(in1 int) returns table ( out1 int ) +language plpgsql as $function$ declare in1 int; out1 int; begin end -$function$ -language plpgsql; +$function$; select shadowtest(1); @@ -2983,14 +2983,14 @@ create or replace function shadowtest(in1 int) returns table ( out1 int ) +language plpgsql as $function$ declare in1 int; out1 int; begin end -$function$ -language plpgsql; +$function$; select shadowtest(1); @@ -2998,6 +2998,7 @@ drop function shadowtest(int); create or replace function shadowtest() returns void +language plpgsql as $function$ declare f1 int; @@ -3007,13 +3008,13 @@ begin begin end; end -$function$ -language plpgsql; +$function$; drop function shadowtest(); create or replace function shadowtest(in1 int) returns void +language plpgsql as $function$ declare in1 int; @@ -3023,21 +3024,20 @@ begin begin end; end -$function$ -language plpgsql; +$function$; drop function shadowtest(int); create or replace function shadowtest() returns void +language plpgsql as $function$ declare f1 int; c1 cursor (f1 int) for select 1; begin end -$function$ -language plpgsql; +$function$; drop function shadowtest(); @@ -3045,10 +3045,10 @@ set plpgsql.extra_errors = shadowed_variables; create or replace function shadowtest(f1 int) returns boolean +language plpgsql as $function$ declare f1 int; begin return 1; end -$function$ -language plpgsql; +$function$; select shadowtest(1); @@ -3058,10 +3058,10 @@ reset plpgsql.extra_warnings; create or replace function shadowtest(f1 int) returns boolean +language plpgsql as $function$ declare f1 int; begin return 1; end -$function$ -language plpgsql; +$function$; select shadowtest(1); @@ -3168,6 +3168,7 @@ reset plpgsql.extra_warnings; create function sc_test() returns setof int +language plpgsql as $function$ declare c scroll cursor for select f1 from int4_tbl; @@ -3181,13 +3182,13 @@ begin end loop; close c; end; -$function$ -language plpgsql; +$function$; select * from sc_test(); create or replace function sc_test() returns setof int +language plpgsql as $function$ declare c no scroll cursor for select f1 from int4_tbl; @@ -3201,13 +3202,13 @@ begin end loop; close c; end; -$function$ -language plpgsql; +$function$; select * from sc_test(); create or replace function sc_test() returns setof int +language plpgsql as $function$ declare c refcursor; @@ -3221,13 +3222,13 @@ begin end loop; close c; end; -$function$ -language plpgsql; +$function$; select * from sc_test(); create or replace function sc_test() returns setof int +language plpgsql as $function$ declare c refcursor; @@ -3241,13 +3242,13 @@ begin end loop; close c; end; -$function$ -language plpgsql; +$function$; select * from sc_test(); create or replace function sc_test() returns setof int +language plpgsql as $function$ declare c refcursor; @@ -3262,13 +3263,13 @@ begin end loop; close c; end; -$function$ -language plpgsql; +$function$; select * from sc_test(); create or replace function sc_test() returns setof int +language plpgsql as $function$ declare c cursor for select * from generate_series(1, 10); @@ -3287,13 +3288,13 @@ begin end loop; close c; end; -$function$ -language plpgsql; +$function$; select * from sc_test(); create or replace function sc_test() returns setof int +language plpgsql as $function$ declare c cursor for select * from generate_series(1, 10); @@ -3307,8 +3308,7 @@ begin end if; close c; end; -$function$ -language plpgsql; +$function$; select * from sc_test(); @@ -3316,6 +3316,7 @@ drop function sc_test(); create function pl_qual_names(param1 int) returns void +language plpgsql as $function$ <> declare @@ -3331,8 +3332,7 @@ begin raise notice 'innerblock.param1 = %', innerblock.param1; end; end; -$function$ -language plpgsql; +$function$; select pl_qual_names(42); @@ -3340,6 +3340,7 @@ drop function pl_qual_names(int); create function ret_query1(out int, out int) returns setof record +language plpgsql as $function$ begin $1 := -1; @@ -3348,8 +3349,7 @@ begin return query select x + 1, x * 10 from generate_series(0, 10) s (x); return next; end; -$function$ -language plpgsql; +$function$; select * from ret_query1(); @@ -3357,18 +3357,19 @@ create type record_type as (x text, y int, z boolean); create or replace function ret_query2(lim int) returns setof record_type +language plpgsql as $function$ begin return query select fipshash(s.x::text), s.x, s.x > 0 from generate_series(-8, lim) s (x) where s.x % 2 = 0; end; -$function$ -language plpgsql; +$function$; select * from ret_query2(8); create function exc_using(int, text) returns int +language plpgsql as $function$ declare i int; begin @@ -3378,8 +3379,7 @@ begin execute 'select $2 + $2*3 + length($1)' into i using $2,$1; return i; end -$function$ -language plpgsql; +$function$; select exc_using(5, 'foobar'); @@ -3387,6 +3387,7 @@ drop function exc_using(int, text); create or replace function exc_using(int) returns void +language plpgsql as $function$ declare c refcursor; @@ -3401,8 +3402,7 @@ begin close c; return; end; -$function$ -language plpgsql; +$function$; select exc_using(5); @@ -3410,6 +3410,7 @@ drop function exc_using(int); create or replace function forc01() returns void +language plpgsql as $function$ declare c cursor(r1 integer, r2 integer) @@ -3448,8 +3449,7 @@ begin raise notice 'after loop, c2 = %', c2; return; end; -$function$ -language plpgsql; +$function$; select forc01(); @@ -3463,6 +3463,7 @@ as create or replace function forc01() returns void +language plpgsql as $function$ declare c cursor for select * from forc_test; @@ -3472,8 +3473,7 @@ begin update forc_test set i = i * 100, j = r.j * 2 where current of c; end loop; end; -$function$ -language plpgsql; +$function$; select forc01(); @@ -3481,6 +3481,7 @@ select * from forc_test; create or replace function forc01() returns void +language plpgsql as $function$ declare c refcursor := 'fooled_ya'; @@ -3494,8 +3495,7 @@ begin update forc_test set i = i * 100, j = r.j * 2 where current of c; end loop; end; -$function$ -language plpgsql; +$function$; select forc01(); @@ -3522,6 +3522,7 @@ $do$; create or replace function forc_bad() returns void +language plpgsql as $function$ declare c refcursor; @@ -3530,18 +3531,17 @@ begin raise notice '%', r.i; end loop; end; -$function$ -language plpgsql; +$function$; create or replace function return_dquery() returns setof int +language plpgsql as $function$ begin return query execute 'select * from (values(10),(20)) f'; return query execute 'select * from (values($1),($2)) f' using 40,50; end; -$function$ -language plpgsql; +$function$; select * from return_dquery(); @@ -3558,13 +3558,13 @@ insert into tabwithcols values (10, 20, 30, 40), (50, 60, 70, 80); create or replace function returnqueryf() returns setof tabwithcols +language plpgsql as $function$ begin return query select * from tabwithcols; return query execute 'select * from tabwithcols'; end; -$function$ -language plpgsql; +$function$; select * from returnqueryf(); @@ -3591,6 +3591,7 @@ create type compostype as (x int, y varchar); create or replace function compos() returns compostype +language plpgsql as $function$ declare v compostype; @@ -3598,13 +3599,13 @@ begin v := (1, 'hello'); return v; end; -$function$ -language plpgsql; +$function$; select compos(); create or replace function compos() returns compostype +language plpgsql as $function$ declare v record; @@ -3612,41 +3613,40 @@ begin v := (1, 'hello'::varchar); return v; end; -$function$ -language plpgsql; +$function$; select compos(); create or replace function compos() returns compostype +language plpgsql as $function$ begin return (1, 'hello'::varchar); end; -$function$ -language plpgsql; +$function$; select compos(); create or replace function compos() returns compostype +language plpgsql as $function$ begin return (1, 'hello'); end; -$function$ -language plpgsql; +$function$; select compos(); create or replace function compos() returns compostype +language plpgsql as $function$ begin return (1, 'hello')::compostype; end; -$function$ -language plpgsql; +$function$; select compos(); @@ -3654,6 +3654,7 @@ drop function compos(); create or replace function composrec() returns record +language plpgsql as $function$ declare v record; @@ -3661,19 +3662,18 @@ begin v := (1, 'hello'); return v; end; -$function$ -language plpgsql; +$function$; select composrec(); create or replace function composrec() returns record +language plpgsql as $function$ begin return (1, 'hello'); end; -$function$ -language plpgsql; +$function$; select composrec(); @@ -3681,6 +3681,7 @@ drop function composrec(); create or replace function compos() returns setof compostype +language plpgsql as $function$ begin for i in 1..3 @@ -3690,8 +3691,7 @@ begin return next null::compostype; return next (2, 'goodbye')::compostype; end; -$function$ -language plpgsql; +$function$; select * from compos(); @@ -3699,24 +3699,24 @@ drop function compos(); create or replace function compos() returns compostype +language plpgsql as $function$ begin return 1 + 1; end; -$function$ -language plpgsql; +$function$; select compos(); create or replace function compos() returns compostype +language plpgsql as $function$ declare x int := 42; begin return x; end; -$function$ -language plpgsql; +$function$; select * from compos(); @@ -3724,6 +3724,7 @@ drop function compos(); create or replace function compos() returns int +language plpgsql as $function$ declare v compostype; @@ -3731,19 +3732,18 @@ begin v := (1, 'hello'); return v; end; -$function$ -language plpgsql; +$function$; select compos(); create or replace function compos() returns int +language plpgsql as $function$ begin return (1, 'hello')::compostype; end; -$function$ -language plpgsql; +$function$; select compos(); @@ -3753,6 +3753,7 @@ drop type compostype; create or replace function raise_test() returns void +language plpgsql as $function$ begin raise notice '% % %', 1, 2, 3 @@ -3760,13 +3761,13 @@ begin raise '% % %', 1, 2, 3 using errcode = 'division_by_zero', detail = 'some detail info'; end; -$function$ -language plpgsql; +$function$; select raise_test(); create or replace function raise_test() returns void +language plpgsql as $function$ begin raise 'check me' @@ -3776,13 +3777,13 @@ begin raise notice 'SQLSTATE: % SQLERRM: %', sqlstate, sqlerrm; raise; end; -$function$ -language plpgsql; +$function$; select raise_test(); create or replace function raise_test() returns void +language plpgsql as $function$ begin raise 'check me' @@ -3792,13 +3793,13 @@ begin raise notice 'SQLSTATE: % SQLERRM: %', sqlstate, sqlerrm; raise; end; -$function$ -language plpgsql; +$function$; select raise_test(); create or replace function raise_test() returns void +language plpgsql as $function$ begin raise 'check me' @@ -3808,13 +3809,13 @@ begin raise notice 'SQLSTATE: % SQLERRM: %', sqlstate, sqlerrm; raise; end; -$function$ -language plpgsql; +$function$; select raise_test(); create or replace function raise_test() returns void +language plpgsql as $function$ begin raise division_by_zero using detail = 'some detail info'; @@ -3823,112 +3824,112 @@ begin raise notice 'SQLSTATE: % SQLERRM: %', sqlstate, sqlerrm; raise; end; -$function$ -language plpgsql; +$function$; select raise_test(); create or replace function raise_test() returns void +language plpgsql as $function$ begin raise division_by_zero; end; -$function$ -language plpgsql; +$function$; select raise_test(); create or replace function raise_test() returns void +language plpgsql as $function$ begin raise sqlstate '1234F'; end; -$function$ -language plpgsql; +$function$; select raise_test(); create or replace function raise_test() returns void +language plpgsql as $function$ begin raise division_by_zero using message = 'custom' || ' message'; end; -$function$ -language plpgsql; +$function$; select raise_test(); create or replace function raise_test() returns void +language plpgsql as $function$ begin raise using message = 'custom' || ' message', errcode = '22012'; end; -$function$ -language plpgsql; +$function$; select raise_test(); create or replace function raise_test() returns void +language plpgsql as $function$ begin raise notice 'some message' using message = 'custom' || ' message', errcode = '22012'; end; -$function$ -language plpgsql; +$function$; select raise_test(); create or replace function raise_test() returns void +language plpgsql as $function$ begin raise division_by_zero using message = 'custom' || ' message', errcode = '22012'; end; -$function$ -language plpgsql; +$function$; select raise_test(); create or replace function raise_test() returns void +language plpgsql as $function$ begin raise; end; -$function$ -language plpgsql; +$function$; select raise_test(); create function zero_divide() returns int +language plpgsql +parallel SAFE as $function$ declare v int := 0; begin return 10 / v; end; -$function$ -language plpgsql -parallel SAFE; +$function$; create or replace function raise_test() returns void +language plpgsql as $function$ begin raise exception 'custom exception' using detail = 'some detail of custom exception', hint = 'some hint related to custom exception'; end; -$function$ -language plpgsql; +$function$; create function stacked_diagnostics_test() returns void +language plpgsql as $function$ declare _sqlstate text; _message text; @@ -3943,13 +3944,13 @@ exception when others then raise notice 'sqlstate: %, message: %, context: [%]', _sqlstate, _message, replace(_context, E'\n', ' <- '); end; -$function$ -language plpgsql; +$function$; select stacked_diagnostics_test(); create or replace function stacked_diagnostics_test() returns void +language plpgsql as $function$ declare _detail text; _hint text; @@ -3963,13 +3964,13 @@ exception when others then _hint = pg_exception_hint; raise notice 'message: %, detail: %, hint: %', _message, _detail, _hint; end; -$function$ -language plpgsql; +$function$; select stacked_diagnostics_test(); create or replace function stacked_diagnostics_test() returns void +language plpgsql as $function$ declare _detail text; _hint text; @@ -3981,8 +3982,7 @@ begin _hint = pg_exception_hint; raise notice 'message: %, detail: %, hint: %', _message, _detail, _hint; end; -$function$ -language plpgsql; +$function$; select stacked_diagnostics_test(); @@ -3990,6 +3990,8 @@ drop function stacked_diagnostics_test(); create function error_trap_test() returns text +language plpgsql +parallel SAFE as $function$ begin perform zero_divide(); @@ -3997,9 +3999,7 @@ begin exception when division_by_zero then return 'division_by_zero detected'; end; -$function$ -language plpgsql -parallel SAFE; +$function$; set debug_parallel_query = 'on'; @@ -4015,6 +4015,7 @@ drop function zero_divide(); create or replace function raise_test() returns void +language plpgsql as $function$ begin perform 1/0; @@ -4023,8 +4024,7 @@ exception raise notice using message = sqlstate; raise sqlstate '22012' using message = 'substitute message'; end; -$function$ -language plpgsql; +$function$; select raise_test(); @@ -4032,6 +4032,7 @@ drop function raise_test(); create or replace function stacked_diagnostics_test() returns void +language plpgsql as $function$ declare _column_name text; _constraint_name text; @@ -4055,8 +4056,7 @@ exception when others then raise notice 'column %, constraint %, type %, table %, schema %', _column_name, _constraint_name, _datatype_name, _table_name, _schema_name; end; -$function$ -language plpgsql; +$function$; select stacked_diagnostics_test(); @@ -4064,13 +4064,13 @@ drop function stacked_diagnostics_test(); create or replace function vari(variadic int[]) returns void +language plpgsql as $function$ begin for i in array_lower($1,1)..array_upper($1,1) loop raise notice '%', $1[i]; end loop; end; -$function$ -language plpgsql; +$function$; select vari(1, 2, 3, 4, 5); @@ -4082,6 +4082,9 @@ drop function vari(int[]); create or replace function pleast(variadic numeric[]) returns numeric +language plpgsql +immutable +strict as $function$ declare aux numeric = $1[array_lower($1,1)]; begin @@ -4090,10 +4093,7 @@ begin end loop; return aux; end; -$function$ -language plpgsql -immutable -strict; +$function$; select pleast(10, 1, 2, 3, -16); @@ -4105,15 +4105,15 @@ select pleast(10, 20, -1.0); create or replace function pleast(numeric) returns numeric +language plpgsql +immutable +strict as $function$ begin raise notice 'non-variadic function called'; return $1; end; -$function$ -language plpgsql -immutable -strict; +$function$; select pleast(10); @@ -4126,14 +4126,14 @@ returns table ( a int, b int ) +language plpgsql +immutable +strict as $function$ begin return query select $1, $1+i from generate_series(1,5) g(i); end; -$function$ -language plpgsql -immutable -strict; +$function$; select * from tftest(10); @@ -4142,6 +4142,9 @@ returns table ( a int, b int ) +language plpgsql +immutable +strict as $function$ begin a := a1; b := a1 + 1; @@ -4149,10 +4152,7 @@ begin a := a1 * 10; b := a1 * 10 + 1; return next; end; -$function$ -language plpgsql -immutable -strict; +$function$; select * from tftest(10); @@ -4160,6 +4160,7 @@ drop function tftest(int); create function rttest() returns setof int +language plpgsql as $function$ declare rc int; begin @@ -4176,30 +4177,29 @@ begin get diagnostics rc = row_count; raise notice '% %', found, rc; end; -$function$ -language plpgsql; +$function$; select * from rttest(); create or replace function rttest() returns setof int +language plpgsql as $function$ begin return query select 10 into no_such_table; end; -$function$ -language plpgsql; +$function$; select * from rttest(); create or replace function rttest() returns setof int +language plpgsql as $function$ begin return query execute 'select 10 into no_such_table'; end; -$function$ -language plpgsql; +$function$; select * from rttest(); @@ -4209,6 +4209,7 @@ drop function rttest(); create function leaker_1(fail boolean) returns int +language plpgsql as $function$ DECLARE v_var INTEGER; @@ -4220,11 +4221,11 @@ BEGIN END; RETURN 1; END; -$function$ -language plpgsql; +$function$; create function leaker_2(fail boolean, out error_code int, out new_id int) returns record +language plpgsql as $function$ BEGIN IF fail THEN @@ -4234,8 +4235,7 @@ BEGIN new_id := 1; RETURN; END; -$function$ -language plpgsql; +$function$; select * from leaker_1(false); @@ -4247,6 +4247,7 @@ drop function leaker_2(boolean); create function nonsimple_expr_test() returns text[] +language plpgsql as $function$ DECLARE arr text[]; @@ -4260,8 +4261,7 @@ BEGIN arr[(SELECT i)][(SELECT i+1)] := (SELECT lr); RETURN arr; END; -$function$ -language plpgsql; +$function$; select nonsimple_expr_test(); @@ -4269,6 +4269,7 @@ drop function nonsimple_expr_test(); create function nonsimple_expr_test() returns int +language plpgsql as $function$ declare i integer NOT NULL := 0; @@ -4281,8 +4282,7 @@ begin end; return i; end; -$function$ -language plpgsql; +$function$; select nonsimple_expr_test(); @@ -4290,6 +4290,7 @@ drop function nonsimple_expr_test(); create function recurse(double precision) returns double precision +language plpgsql as $function$ begin if ($1 > 0) then @@ -4298,15 +4299,14 @@ begin return $1; end if; end; -$function$ -language plpgsql; +$function$; create function sql_recurse(double precision) returns double precision +language sql as $function$ select recurse($1) limit 1; -$function$ -language sql; +$function$; select recurse(10); @@ -4346,23 +4346,23 @@ drop function error1(text); create function sql_to_date(int) returns date -as $function$ -select $1::text::date -$function$ language sql immutable -strict; +strict +as $function$ +select $1::text::date +$function$; create cast (int as date) with function sql_to_date(int) as assignment; create function cast_invoker(int) returns date +language plpgsql as $function$ begin return $1; end -$function$ -language plpgsql; +$function$; select cast_invoker(20150717); @@ -4425,25 +4425,25 @@ set standard_conforming_strings = off; create or replace function strtest() returns text +language plpgsql as $function$ begin raise notice 'foo\\bar\041baz'; return 'foo\\bar\041baz'; end -$function$ -language plpgsql; +$function$; select strtest(); create or replace function strtest() returns text +language plpgsql as $function$ begin raise notice E'foo\\bar\041baz'; return E'foo\\bar\041baz'; end -$function$ -language plpgsql; +$function$; select strtest(); @@ -4451,25 +4451,25 @@ set standard_conforming_strings = 'on'; create or replace function strtest() returns text +language plpgsql as $function$ begin raise notice 'foo\\bar\041baz\'; return 'foo\\bar\041baz\'; end -$function$ -language plpgsql; +$function$; select strtest(); create or replace function strtest() returns text +language plpgsql as $function$ begin raise notice E'foo\\bar\041baz'; return E'foo\\bar\041baz'; end -$function$ -language plpgsql; +$function$; select strtest(); @@ -4566,6 +4566,7 @@ set plpgsql.variable_conflict = error; create function conflict_test() returns setof int8_tbl +language plpgsql as $function$ declare r record; q1 bigint := 42; @@ -4574,13 +4575,13 @@ begin return next r; end loop; end; -$function$ -language plpgsql; +$function$; select * from conflict_test(); create or replace function conflict_test() returns setof int8_tbl +language plpgsql as $function$ #variable_conflict use_variable declare r record; @@ -4590,13 +4591,13 @@ begin return next r; end loop; end; -$function$ -language plpgsql; +$function$; select * from conflict_test(); create or replace function conflict_test() returns setof int8_tbl +language plpgsql as $function$ #variable_conflict use_column declare r record; @@ -4606,8 +4607,7 @@ begin return next r; end loop; end; -$function$ -language plpgsql; +$function$; select * from conflict_test(); @@ -4615,6 +4615,7 @@ drop function conflict_test(); create function unreserved_test() returns int +language plpgsql as $function$ declare forward int := 21; @@ -4622,13 +4623,13 @@ begin forward := forward * 2; return forward; end -$function$ -language plpgsql; +$function$; select unreserved_test(); create or replace function unreserved_test() returns int +language plpgsql as $function$ declare return int := 42; @@ -4636,13 +4637,13 @@ begin return := return + 1; return return; end -$function$ -language plpgsql; +$function$; select unreserved_test(); create or replace function unreserved_test() returns int +language plpgsql as $function$ declare comment int := 21; @@ -4651,8 +4652,7 @@ begin comment on function unreserved_test() is 'this is a test'; return comment; end -$function$ -language plpgsql; +$function$; select unreserved_test(); @@ -4662,6 +4662,7 @@ drop function unreserved_test(); create function foreach_test(anyarray) returns void +language plpgsql as $function$ declare x int; begin @@ -4670,8 +4671,7 @@ begin raise notice '%', x; end loop; end; -$function$ -language plpgsql; +$function$; select foreach_test(array[1, 2, 3, 4]); @@ -4679,6 +4679,7 @@ select foreach_test(array[array[1, 2], array[3, 4]]); create or replace function foreach_test(anyarray) returns void +language plpgsql as $function$ declare x int; begin @@ -4687,8 +4688,7 @@ begin raise notice '%', x; end loop; end; -$function$ -language plpgsql; +$function$; select foreach_test(array[1, 2, 3, 4]); @@ -4696,6 +4696,7 @@ select foreach_test(array[array[1, 2], array[3, 4]]); create or replace function foreach_test(anyarray) returns void +language plpgsql as $function$ declare x int[]; begin @@ -4704,8 +4705,7 @@ begin raise notice '%', x; end loop; end; -$function$ -language plpgsql; +$function$; select foreach_test(array[1, 2, 3, 4]); @@ -4713,6 +4713,7 @@ select foreach_test(array[array[1, 2], array[3, 4]]); create or replace function foreach_test(anyarray) returns void +language plpgsql as $function$ declare x int[]; begin @@ -4721,8 +4722,7 @@ begin raise notice '%', x; end loop; end; -$function$ -language plpgsql; +$function$; select foreach_test(array[1, 2, 3, 4]); @@ -4734,6 +4734,7 @@ create type xy_tuple as (x int, y int); create or replace function foreach_test(anyarray) returns void +language plpgsql as $function$ declare r record; begin @@ -4742,8 +4743,7 @@ begin raise notice '%', r; end loop; end; -$function$ -language plpgsql; +$function$; select foreach_test(cast(array[(10, 20), (40, 69), (35, 78)] as xy_tuple[])); @@ -4756,6 +4756,7 @@ select create or replace function foreach_test(anyarray) returns void +language plpgsql as $function$ declare x int; y int; begin @@ -4764,8 +4765,7 @@ begin raise notice 'x = %, y = %', x, y; end loop; end; -$function$ -language plpgsql; +$function$; select foreach_test(cast(array[(10, 20), (40, 69), (35, 78)] as xy_tuple[])); @@ -4778,6 +4778,7 @@ select create or replace function foreach_test(anyarray) returns void +language plpgsql as $function$ declare x xy_tuple[]; begin @@ -4786,8 +4787,7 @@ begin raise notice '%', x; end loop; end; -$function$ -language plpgsql; +$function$; select foreach_test(cast(array[(10, 20), (40, 69), (35, 78)] as xy_tuple[])); @@ -4858,19 +4858,19 @@ drop function testoa(int, int, int); create function returns_rw_array(int) returns int[] language plpgsql +stable as $function$ declare r int[]; begin r := array[$1, $1]; return r; end; -$function$ -stable; +$function$; create function consumes_rw_array(int[]) returns int language plpgsql +stable as $function$ begin return $1[1]; end; -$function$ -stable; +$function$; select consumes_rw_array(returns_rw_array(42)); @@ -4931,6 +4931,7 @@ $do$; create function inner_func(int) returns int +language plpgsql as $function$ declare _context text; begin @@ -4942,11 +4943,11 @@ begin raise notice 'lets make sure we didnt break anything'; return 2 * $1; end; -$function$ -language plpgsql; +$function$; create or replace function outer_func(int) returns int +language plpgsql as $function$ declare myresult int; @@ -4956,11 +4957,11 @@ begin raise notice 'inner_func() done'; return myresult; end; -$function$ -language plpgsql; +$function$; create or replace function outer_outer_func(int) returns int +language plpgsql as $function$ declare myresult int; @@ -4970,8 +4971,7 @@ begin raise notice 'outer_func() done'; return myresult; end; -$function$ -language plpgsql; +$function$; select outer_outer_func(10); @@ -4985,6 +4985,7 @@ drop function inner_func(int); create function inner_func(int) returns int +language plpgsql as $function$ declare _context text; @@ -5004,11 +5005,11 @@ begin raise notice 'lets make sure we didnt break anything'; return 2 * $1; end; -$function$ -language plpgsql; +$function$; create or replace function outer_func(int) returns int +language plpgsql as $function$ declare myresult int; @@ -5018,11 +5019,11 @@ begin raise notice 'inner_func() done'; return myresult; end; -$function$ -language plpgsql; +$function$; create or replace function outer_outer_func(int) returns int +language plpgsql as $function$ declare myresult int; @@ -5032,8 +5033,7 @@ begin raise notice 'outer_func() done'; return myresult; end; -$function$ -language plpgsql; +$function$; select outer_outer_func(10); @@ -5047,6 +5047,7 @@ drop function inner_func(int); create function current_function(text) returns regprocedure +language plpgsql as $function$ declare fn_oid regprocedure; @@ -5054,8 +5055,7 @@ begin get diagnostics fn_oid = pg_routine_oid; return fn_oid; end; -$function$ -language plpgsql; +$function$; select current_function('foo'); @@ -5122,11 +5122,11 @@ $do$; create function plpgsql_domain_check(val int) returns boolean +language plpgsql +immutable as $function$ begin return val > 0; end -$function$ -language plpgsql -immutable; +$function$; create domain plpgsql_domain as int check (plpgsql_domain_check(value)); @@ -5148,11 +5148,11 @@ $do$; create function plpgsql_arr_domain_check(val int[]) returns boolean +language plpgsql +immutable as $function$ begin return val[1] > 0; end -$function$ -language plpgsql -immutable; +$function$; create domain plpgsql_arr_domain as int[] check (plpgsql_arr_domain_check(value)); @@ -5536,6 +5536,7 @@ insert into partitioned_table values (2, 'Row 2'); create or replace function get_from_partitioned_table(partitioned_table.a%type) returns partitioned_table +language plpgsql as $function$ DECLARE a_val partitioned_table.a%TYPE; @@ -5545,13 +5546,13 @@ BEGIN SELECT * INTO result FROM partitioned_table WHERE a = a_val; RETURN result; END; -$function$ -language plpgsql; +$function$; select * from get_from_partitioned_table(1) as t; create or replace function list_partitioned_table() returns setof public.partitioned_table.a%type +language plpgsql as $function$ DECLARE row public.partitioned_table%ROWTYPE; @@ -5563,17 +5564,16 @@ BEGIN END LOOP; RETURN; END; -$function$ -language plpgsql; +$function$; select * from list_partitioned_table() as t; create function fx(x wslot) returns void +language plpgsql as $function$ BEGIN GET DIAGNOSTICS x = ROW_COUNT; RETURN; END; -$function$ -language plpgsql; +$function$; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__polymorphism_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__polymorphism_100.snap index cdc39d3bf..ea281c6c1 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__polymorphism_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__polymorphism_100.snap @@ -4,10 +4,10 @@ input_file: crates/pgls_pretty_print/tests/data/multi/polymorphism.sql --- create function polyf(x anyelement) returns anyelement +language sql as $function$ select x + 1 -$function$ -language sql; +$function$; select polyf(42) as int, polyf(4.5) as num; @@ -17,10 +17,10 @@ drop function polyf(anyelement); create function polyf(x anyelement) returns anyarray +language sql as $function$ select array[x + 1, x + 2] -$function$ -language sql; +$function$; select polyf(42) as int, polyf(4.5) as num; @@ -28,10 +28,10 @@ drop function polyf(anyelement); create function polyf(x anyarray) returns anyelement +language sql as $function$ select x[1] -$function$ -language sql; +$function$; select polyf(array[2, 4]) as int, polyf(array[4.5, 7.7]) as num; @@ -41,10 +41,10 @@ drop function polyf(anyarray); create function polyf(x anyarray) returns anyarray +language sql as $function$ select x -$function$ -language sql; +$function$; select polyf(array[2, 4]) as int, polyf(array[4.5, 7.7]) as num; @@ -54,17 +54,17 @@ drop function polyf(anyarray); create function polyf(x anyelement) returns anyrange +language sql as $function$ select array[x + 1, x + 2] -$function$ -language sql; +$function$; create function polyf(x anyrange) returns anyarray +language sql as $function$ select array[lower(x), upper(x)] -$function$ -language sql; +$function$; select polyf(int4range(42, 49)) as int, polyf(float8range(4.5, 7.8)) as num; @@ -72,10 +72,10 @@ drop function polyf(anyrange); create function polyf(x anycompatible, y anycompatible) returns anycompatiblearray +language sql as $function$ select array[x, y] -$function$ -language sql; +$function$; select polyf(2, 4) as int, polyf(2, 4.5) as num; @@ -83,10 +83,10 @@ drop function polyf(anycompatible, anycompatible); create function polyf(x anycompatiblerange, y anycompatible, z anycompatible) returns anycompatiblearray +language sql as $function$ select array[lower(x), upper(x), y, z] -$function$ -language sql; +$function$; select polyf(int4range(42, 49), 11, cast(2 as smallint)) @@ -104,10 +104,10 @@ drop function polyf(anycompatiblerange, anycompatible, anycompatible); create function polyf(x anycompatiblemultirange, y anycompatible, z anycompatible) returns anycompatiblearray +language sql as $function$ select array[lower(x), upper(x), y, z] -$function$ -language sql; +$function$; select polyf( @@ -129,17 +129,17 @@ drop function polyf(anycompatiblemultirange, anycompatible, anycompatible); create function polyf(x anycompatible) returns anycompatiblerange +language sql as $function$ select array[x + 1, x + 2] -$function$ -language sql; +$function$; create function polyf(x anycompatiblerange, y anycompatiblearray) returns anycompatiblerange +language sql as $function$ select x -$function$ -language sql; +$function$; select polyf(int4range(42, 49), array[11]) as int, polyf(float8range(4.5, 7.8), array[7]) as num; @@ -147,17 +147,17 @@ drop function polyf(anycompatiblerange, anycompatiblearray); create function polyf(x anycompatible) returns anycompatiblemultirange +language sql as $function$ select array[x + 1, x + 2] -$function$ -language sql; +$function$; create function polyf(x anycompatiblemultirange, y anycompatiblearray) returns anycompatiblemultirange +language sql as $function$ select x -$function$ -language sql; +$function$; select polyf(multirange(int4range(42, 49)), array[11]) @@ -176,10 +176,10 @@ polyf( out x anyarray, out y anycompatiblearray ) +language sql as $function$ select a || b, array[c, d] -$function$ -language sql; +$function$; select x, pg_typeof(x), y, pg_typeof(y) from polyf(11, array[1, 2], 42, 34.5); @@ -193,10 +193,10 @@ drop function polyf(anyelement, anyarray, anycompatible, anycompatible); create function polyf(anyrange) returns anymultirange +language sql as $function$ select multirange($1); -$function$ -language sql; +$function$; select polyf(int4range(1, 10)); @@ -206,10 +206,10 @@ drop function polyf(anyrange); create function polyf(anymultirange) returns anyelement +language sql as $function$ select lower($1); -$function$ -language sql; +$function$; select polyf(int4multirange(int4range(1, 10), int4range(20, 30))); @@ -219,10 +219,10 @@ drop function polyf(anymultirange); create function polyf(anycompatiblerange) returns anycompatiblemultirange +language sql as $function$ select multirange($1); -$function$ -language sql; +$function$; select polyf(int4range(1, 10)); @@ -232,10 +232,10 @@ drop function polyf(anycompatiblerange); create function polyf(anymultirange) returns anyrange +language sql as $function$ select range_merge($1); -$function$ -language sql; +$function$; select polyf(int4multirange(int4range(1, 10), int4range(20, 30))); @@ -245,10 +245,10 @@ drop function polyf(anymultirange); create function polyf(anycompatiblemultirange) returns anycompatiblerange +language sql as $function$ select range_merge($1); -$function$ -language sql; +$function$; select polyf(int4multirange(int4range(1, 10), int4range(20, 30))); @@ -258,10 +258,10 @@ drop function polyf(anycompatiblemultirange); create function polyf(anycompatiblemultirange) returns anycompatible +language sql as $function$ select lower($1); -$function$ -language sql; +$function$; select polyf(int4multirange(int4range(1, 10), int4range(20, 30))); @@ -271,67 +271,67 @@ drop function polyf(anycompatiblemultirange); create function stfp(anyarray) returns anyarray +language sql as $function$ select $1 -$function$ -language sql; +$function$; create function stfnp(int[]) returns int[] +language sql as $function$ select $1 -$function$ -language sql; +$function$; create function tfp(anyarray, anyelement) returns anyarray +language sql as $function$ select $1 || $2 -$function$ -language sql; +$function$; create function tfnp(int[], int) returns int[] +language sql as $function$ select $1 || $2 -$function$ -language sql; +$function$; create function tf1p(anyarray, int) returns anyarray +language sql as $function$ select $1 -$function$ -language sql; +$function$; create function tf2p(int[], anyelement) returns int[] +language sql as $function$ select $1 -$function$ -language sql; +$function$; create function sum3(anyelement, anyelement, anyelement) returns anyelement +language sql +strict as $function$ select $1+$2+$3 -$function$ -language sql -strict; +$function$; create function ffp(anyarray) returns anyarray +language sql as $function$ select $1 -$function$ -language sql; +$function$; create function ffnp(int[]) returns int[] +language sql as $function$ select $1 -$function$ -language sql; +$function$; create aggregate myaggp01a (*) (sfunc = stfnp, stype = int[], finalfunc = ffp, initcond = '{}'); @@ -719,20 +719,20 @@ select mysum2(f1, f1 + 1) from t; create function bleat(int) returns int +language plpgsql as $function$ begin raise notice 'bleat %', $1; return $1; end -$function$ -language plpgsql; +$function$; create function sql_if(boolean, anyelement, anyelement) returns anyelement +language sql as $function$ select case when $1 then $2 else $3 end -$function$ -language sql; +$function$; select f1, sql_if(f1 > 0, bleat(f1), bleat(f1 + 1)) from int4_tbl; @@ -760,6 +760,8 @@ from create function add_group(grp anyarray, ad anyelement, size int) returns anyarray +language plpgsql +immutable as $function$ begin if grp is null then @@ -770,9 +772,7 @@ begin end if; return grp; end; -$function$ -language plpgsql -immutable; +$function$; create aggregate build_group (anyelement, int) (sfunc = add_group, stype = anyarray); @@ -784,20 +784,20 @@ create aggregate build_group (bigint, int) (sfunc = add_group, stype = bigint[]) create function first_el_transfn(anyarray, anyelement) returns anyarray +language sql +immutable as $function$ select $1 || $2 -$function$ -language sql -immutable; +$function$; create function first_el(anyarray) returns anyelement -as $function$ -select $1[1] -$function$ language sql +immutable strict -immutable; +as $function$ +select $1[1] +$function$; create aggregate first_el_agg_f8 ( double precision @@ -843,12 +843,12 @@ select anyrange_in('[10,20)', cast('int4range' as regtype), -1); create function myleast(variadic anyarray) returns anyelement -as $function$ -select min($1[i]) from generate_subscripts($1,1) g(i) -$function$ language sql immutable -strict; +strict +as $function$ +select min($1[i]) from generate_subscripts($1,1) g(i) +$function$; select myleast(10, 1, 20, 33); @@ -866,12 +866,12 @@ select myleast(variadic cast(array[] as int[])); create function concat(text, variadic anyarray) returns text -as $function$ -select array_to_string($2, $1); -$function$ language sql immutable -strict; +strict +as $function$ +select array_to_string($2, $1); +$function$; select concat('%', 1, 2, 3, 4, 5); @@ -885,12 +885,12 @@ drop function concat(text, anyarray); create function formarray(anyelement, variadic anyarray) returns anyarray -as $function$ -select array_prepend($1, $2); -$function$ language sql immutable -strict; +strict +as $function$ +select array_prepend($1, $2); +$function$; select formarray(1, 2, 3, 4, 5); @@ -924,10 +924,10 @@ select pg_typeof(myleast(10, 1, 20, 33)); create function dfunc(a int default 1, int default 2) returns int +language sql as $function$ select $1 + $2; -$function$ -language sql; +$function$; select dfunc(); @@ -945,16 +945,16 @@ drop function dfunc(int, int); create function dfunc(a int default 1, b int) returns int +language sql as $function$ select $1 + $2; -$function$ -language sql; +$function$; create function dfunc(a int default 1, out sum int, b int default 2) +language sql as $function$ select $1 + $2; -$function$ -language sql; +$function$; select dfunc(); @@ -962,19 +962,19 @@ drop function dfunc(int, int); create function dfunc(a int default 1.0, int default '-1') returns int +language sql as $function$ select $1 + $2; -$function$ -language sql; +$function$; select dfunc(); create function dfunc(a text default 'Hello', b text default 'World') returns text +language sql as $function$ select $1 || ', ' || $2; -$function$ -language sql; +$function$; select dfunc(); @@ -992,17 +992,17 @@ drop function dfunc(text, text); create function dfunc(int default 1, int default 2) returns int +language sql as $function$ select 2; -$function$ -language sql; +$function$; create function dfunc(int default 1, int default 2, int default 3, int default 4) returns int +language sql as $function$ select 4; -$function$ -language sql; +$function$; select dfunc(); @@ -1020,17 +1020,17 @@ drop function dfunc(int, int, int, int); create function dfunc(out int default 20) returns int +language sql as $function$ select 1; -$function$ -language sql; +$function$; create function dfunc(anyelement default cast('World' as text)) returns text +language sql as $function$ select 'Hello, ' || $1::text; -$function$ -language sql; +$function$; select dfunc(); @@ -1044,10 +1044,10 @@ drop function dfunc(anyelement); create function dfunc(variadic a int[]) returns int +language sql as $function$ select array_upper($1, 1) -$function$ -language sql; +$function$; select dfunc(); @@ -1057,10 +1057,10 @@ select dfunc(10, 20); create or replace function dfunc(variadic a int[] default cast(array[] as int[])) returns int +language sql as $function$ select array_upper($1, 1) -$function$ -language sql; +$function$; select dfunc(); @@ -1070,33 +1070,33 @@ select dfunc(10, 20); create or replace function dfunc(variadic a int[]) returns int +language sql as $function$ select array_upper($1, 1) -$function$ -language sql; +$function$; drop function dfunc(int[]); create function dfunc(int default 1, int default 2, int default 3) returns int +language sql as $function$ select 3; -$function$ -language sql; +$function$; create function dfunc(int default 1, int default 2) returns int +language sql as $function$ select 2; -$function$ -language sql; +$function$; create function dfunc(text) returns text +language sql as $function$ select $1; -$function$ -language sql; +$function$; select dfunc(1); @@ -1115,10 +1115,10 @@ returns table ( c int, d int ) +language sql as $function$ select $1, $2, $3, $4; -$function$ -language sql; +$function$; select (dfunc(10, 20, 30)).*; @@ -1150,10 +1150,10 @@ drop function dfunc(int, int, int, int); create function xleast(x numeric, variadic arr numeric[]) returns numeric +language sql as $function$ select least(x, min(arr[i])) from generate_subscripts(arr, 1) g(i); -$function$ -language sql; +$function$; select xleast("x" := 1, variadic "arr" := array[2, 3]); @@ -1185,10 +1185,10 @@ returns table ( b numeric, c date ) +language sql as $function$ select $1, $2, $3; -$function$ -language sql; +$function$; select (dfunc('Hello World', 20, cast('2009-07-25' as date))).*; @@ -1212,10 +1212,10 @@ dfunc( out _c numeric ) returns record +language sql as $function$ select $1, $2; -$function$ -language sql; +$function$; select (dfunc()).*; @@ -1241,10 +1241,10 @@ dfunc( out _c numeric ) returns record +language sql as $function$ select $1, $2; -$function$ -language sql; +$function$; create or replace function dfunc( @@ -1254,47 +1254,47 @@ dfunc( out _c numeric ) returns record +language sql as $function$ select $1, $2; -$function$ -language sql; +$function$; drop function dfunc(varchar, numeric); create function testpolym(a int, a int) returns int +language sql as $function$ select 1; -$function$ -language sql; +$function$; create function testpolym(int, out a int, out a int) returns int +language sql as $function$ select 1; -$function$ -language sql; +$function$; create function testpolym(out a int, inout a int) returns int +language sql as $function$ select 1; -$function$ -language sql; +$function$; create function testpolym(a int, inout a int) returns int +language sql as $function$ select 1; -$function$ -language sql; +$function$; create function testpolym(a int, out a int) returns int +language sql as $function$ select $1; -$function$ -language sql; +$function$; select testpolym(37); @@ -1304,10 +1304,10 @@ create function testpolym(a int) returns table ( a int ) +language sql as $function$ select $1; -$function$ -language sql; +$function$; select * from testpolym(37); @@ -1315,10 +1315,10 @@ drop function testpolym(int); create function dfunc(a anyelement, b anyelement default null, flag boolean default true) returns anyelement +language sql as $function$ select case when $3 then $1 else $2 end; -$function$ -language sql; +$function$; select dfunc(1, 2); @@ -1403,10 +1403,10 @@ drop function dfunc(anyelement, anyelement, boolean); create function anyctest(anycompatible, anycompatible) returns anycompatible +language sql as $function$ select greatest($1, $2) -$function$ -language sql; +$function$; select x, pg_typeof(x) from anyctest(11, 12) as x; @@ -1420,10 +1420,10 @@ drop function anyctest(anycompatible, anycompatible); create function anyctest(anycompatible, anycompatible) returns anycompatiblearray +language sql as $function$ select array[$1, $2] -$function$ -language sql; +$function$; select x, pg_typeof(x) from anyctest(11, 12) as x; @@ -1435,10 +1435,10 @@ drop function anyctest(anycompatible, anycompatible); create function anyctest(anycompatible, anycompatiblearray) returns anycompatiblearray +language sql as $function$ select array[$1] || $2 -$function$ -language sql; +$function$; select x, pg_typeof(x) from anyctest(11, array[12]) as x; @@ -1456,10 +1456,10 @@ drop function anyctest(anycompatible, anycompatiblearray); create function anyctest(anycompatible, anycompatiblerange) returns anycompatiblerange +language sql as $function$ select $2 -$function$ -language sql; +$function$; select x, pg_typeof(x) from anyctest(11, int4range(4, 7)) as x; @@ -1475,10 +1475,10 @@ drop function anyctest(anycompatible, anycompatiblerange); create function anyctest(anycompatiblerange, anycompatiblerange) returns anycompatible +language sql as $function$ select lower($1) + upper($2) -$function$ -language sql; +$function$; select x, pg_typeof(x) from anyctest(int4range(11, 12), int4range(4, 7)) as x; @@ -1488,17 +1488,17 @@ drop function anyctest(anycompatiblerange, anycompatiblerange); create function anyctest(anycompatible) returns anycompatiblerange +language sql as $function$ select $1 -$function$ -language sql; +$function$; create function anyctest(anycompatible, anycompatiblemultirange) returns anycompatiblemultirange +language sql as $function$ select $2 -$function$ -language sql; +$function$; select x, pg_typeof(x) from anyctest(11, multirange(int4range(4, 7))) as x; @@ -1514,10 +1514,10 @@ drop function anyctest(anycompatible, anycompatiblemultirange); create function anyctest(anycompatiblemultirange, anycompatiblemultirange) returns anycompatible +language sql as $function$ select lower($1) + upper($2) -$function$ -language sql; +$function$; select x, @@ -1543,17 +1543,17 @@ drop function anyctest(anycompatiblemultirange, anycompatiblemultirange); create function anyctest(anycompatible) returns anycompatiblemultirange +language sql as $function$ select $1 -$function$ -language sql; +$function$; create function anyctest(anycompatiblenonarray, anycompatiblenonarray) returns anycompatiblearray +language sql as $function$ select array[$1, $2] -$function$ -language sql; +$function$; select x, pg_typeof(x) from anyctest(11, 12) as x; @@ -1565,10 +1565,10 @@ drop function anyctest(anycompatiblenonarray, anycompatiblenonarray); create function anyctest(a anyelement, b anyarray, c anycompatible, d anycompatible) returns anycompatiblearray +language sql as $function$ select array[c, d] -$function$ -language sql; +$function$; select x, pg_typeof(x) from anyctest(11, array[1, 2], 42, 34.5) as x; @@ -1582,10 +1582,10 @@ drop function anyctest(anyelement, anyarray, anycompatible, anycompatible); create function anyctest(variadic anycompatiblearray) returns anycompatiblearray +language sql as $function$ select $1 -$function$ -language sql; +$function$; select x, pg_typeof(x) from anyctest(11, 12) as x; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__polymorphism_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__polymorphism_80.snap index 141ecbd26..888381641 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__polymorphism_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__polymorphism_80.snap @@ -4,10 +4,10 @@ input_file: crates/pgls_pretty_print/tests/data/multi/polymorphism.sql --- create function polyf(x anyelement) returns anyelement +language sql as $function$ select x + 1 -$function$ -language sql; +$function$; select polyf(42) as int, polyf(4.5) as num; @@ -17,10 +17,10 @@ drop function polyf(anyelement); create function polyf(x anyelement) returns anyarray +language sql as $function$ select array[x + 1, x + 2] -$function$ -language sql; +$function$; select polyf(42) as int, polyf(4.5) as num; @@ -28,10 +28,10 @@ drop function polyf(anyelement); create function polyf(x anyarray) returns anyelement +language sql as $function$ select x[1] -$function$ -language sql; +$function$; select polyf(array[2, 4]) as int, polyf(array[4.5, 7.7]) as num; @@ -41,10 +41,10 @@ drop function polyf(anyarray); create function polyf(x anyarray) returns anyarray +language sql as $function$ select x -$function$ -language sql; +$function$; select polyf(array[2, 4]) as int, polyf(array[4.5, 7.7]) as num; @@ -54,17 +54,17 @@ drop function polyf(anyarray); create function polyf(x anyelement) returns anyrange +language sql as $function$ select array[x + 1, x + 2] -$function$ -language sql; +$function$; create function polyf(x anyrange) returns anyarray +language sql as $function$ select array[lower(x), upper(x)] -$function$ -language sql; +$function$; select polyf(int4range(42, 49)) as int, polyf(float8range(4.5, 7.8)) as num; @@ -72,10 +72,10 @@ drop function polyf(anyrange); create function polyf(x anycompatible, y anycompatible) returns anycompatiblearray +language sql as $function$ select array[x, y] -$function$ -language sql; +$function$; select polyf(2, 4) as int, polyf(2, 4.5) as num; @@ -83,10 +83,10 @@ drop function polyf(anycompatible, anycompatible); create function polyf(x anycompatiblerange, y anycompatible, z anycompatible) returns anycompatiblearray +language sql as $function$ select array[lower(x), upper(x), y, z] -$function$ -language sql; +$function$; select polyf( @@ -113,10 +113,10 @@ polyf( z anycompatible ) returns anycompatiblearray +language sql as $function$ select array[lower(x), upper(x), y, z] -$function$ -language sql; +$function$; select polyf( @@ -138,17 +138,17 @@ drop function polyf(anycompatiblemultirange, anycompatible, anycompatible); create function polyf(x anycompatible) returns anycompatiblerange +language sql as $function$ select array[x + 1, x + 2] -$function$ -language sql; +$function$; create function polyf(x anycompatiblerange, y anycompatiblearray) returns anycompatiblerange +language sql as $function$ select x -$function$ -language sql; +$function$; select polyf(int4range(42, 49), array[11]) @@ -160,17 +160,17 @@ drop function polyf(anycompatiblerange, anycompatiblearray); create function polyf(x anycompatible) returns anycompatiblemultirange +language sql as $function$ select array[x + 1, x + 2] -$function$ -language sql; +$function$; create function polyf(x anycompatiblemultirange, y anycompatiblearray) returns anycompatiblemultirange +language sql as $function$ select x -$function$ -language sql; +$function$; select polyf( @@ -195,10 +195,10 @@ polyf( out x anyarray, out y anycompatiblearray ) +language sql as $function$ select a || b, array[c, d] -$function$ -language sql; +$function$; select x, pg_typeof(x), y, pg_typeof(y) from polyf(11, array[1, 2], 42, 34.5); @@ -229,10 +229,10 @@ drop function polyf(anyelement, anyarray, anycompatible, anycompatible); create function polyf(anyrange) returns anymultirange +language sql as $function$ select multirange($1); -$function$ -language sql; +$function$; select polyf(int4range(1, 10)); @@ -242,10 +242,10 @@ drop function polyf(anyrange); create function polyf(anymultirange) returns anyelement +language sql as $function$ select lower($1); -$function$ -language sql; +$function$; select polyf(int4multirange(int4range(1, 10), int4range(20, 30))); @@ -255,10 +255,10 @@ drop function polyf(anymultirange); create function polyf(anycompatiblerange) returns anycompatiblemultirange +language sql as $function$ select multirange($1); -$function$ -language sql; +$function$; select polyf(int4range(1, 10)); @@ -268,10 +268,10 @@ drop function polyf(anycompatiblerange); create function polyf(anymultirange) returns anyrange +language sql as $function$ select range_merge($1); -$function$ -language sql; +$function$; select polyf(int4multirange(int4range(1, 10), int4range(20, 30))); @@ -281,10 +281,10 @@ drop function polyf(anymultirange); create function polyf(anycompatiblemultirange) returns anycompatiblerange +language sql as $function$ select range_merge($1); -$function$ -language sql; +$function$; select polyf(int4multirange(int4range(1, 10), int4range(20, 30))); @@ -294,10 +294,10 @@ drop function polyf(anycompatiblemultirange); create function polyf(anycompatiblemultirange) returns anycompatible +language sql as $function$ select lower($1); -$function$ -language sql; +$function$; select polyf(int4multirange(int4range(1, 10), int4range(20, 30))); @@ -307,67 +307,67 @@ drop function polyf(anycompatiblemultirange); create function stfp(anyarray) returns anyarray +language sql as $function$ select $1 -$function$ -language sql; +$function$; create function stfnp(int[]) returns int[] +language sql as $function$ select $1 -$function$ -language sql; +$function$; create function tfp(anyarray, anyelement) returns anyarray +language sql as $function$ select $1 || $2 -$function$ -language sql; +$function$; create function tfnp(int[], int) returns int[] +language sql as $function$ select $1 || $2 -$function$ -language sql; +$function$; create function tf1p(anyarray, int) returns anyarray +language sql as $function$ select $1 -$function$ -language sql; +$function$; create function tf2p(int[], anyelement) returns int[] +language sql as $function$ select $1 -$function$ -language sql; +$function$; create function sum3(anyelement, anyelement, anyelement) returns anyelement +language sql +strict as $function$ select $1+$2+$3 -$function$ -language sql -strict; +$function$; create function ffp(anyarray) returns anyarray +language sql as $function$ select $1 -$function$ -language sql; +$function$; create function ffnp(int[]) returns int[] +language sql as $function$ select $1 -$function$ -language sql; +$function$; create aggregate myaggp01a ( * @@ -909,20 +909,20 @@ select mysum2(f1, f1 + 1) from t; create function bleat(int) returns int +language plpgsql as $function$ begin raise notice 'bleat %', $1; return $1; end -$function$ -language plpgsql; +$function$; create function sql_if(boolean, anyelement, anyelement) returns anyelement +language sql as $function$ select case when $1 then $2 else $3 end -$function$ -language sql; +$function$; select f1, sql_if(f1 > 0, bleat(f1), bleat(f1 + 1)) from int4_tbl; @@ -956,6 +956,8 @@ from create function add_group(grp anyarray, ad anyelement, size int) returns anyarray +language plpgsql +immutable as $function$ begin if grp is null then @@ -966,9 +968,7 @@ begin end if; return grp; end; -$function$ -language plpgsql -immutable; +$function$; create aggregate build_group ( anyelement, int @@ -995,20 +995,20 @@ create aggregate build_group ( create function first_el_transfn(anyarray, anyelement) returns anyarray +language sql +immutable as $function$ select $1 || $2 -$function$ -language sql -immutable; +$function$; create function first_el(anyarray) returns anyelement -as $function$ -select $1[1] -$function$ language sql +immutable strict -immutable; +as $function$ +select $1[1] +$function$; create aggregate first_el_agg_f8 ( double precision @@ -1064,12 +1064,12 @@ select anyrange_in('[10,20)', cast('int4range' as regtype), -1); create function myleast(variadic anyarray) returns anyelement -as $function$ -select min($1[i]) from generate_subscripts($1,1) g(i) -$function$ language sql immutable -strict; +strict +as $function$ +select min($1[i]) from generate_subscripts($1,1) g(i) +$function$; select myleast(10, 1, 20, 33); @@ -1087,12 +1087,12 @@ select myleast(variadic cast(array[] as int[])); create function concat(text, variadic anyarray) returns text -as $function$ -select array_to_string($2, $1); -$function$ language sql immutable -strict; +strict +as $function$ +select array_to_string($2, $1); +$function$; select concat('%', 1, 2, 3, 4, 5); @@ -1106,12 +1106,12 @@ drop function concat(text, anyarray); create function formarray(anyelement, variadic anyarray) returns anyarray -as $function$ -select array_prepend($1, $2); -$function$ language sql immutable -strict; +strict +as $function$ +select array_prepend($1, $2); +$function$; select formarray(1, 2, 3, 4, 5); @@ -1145,10 +1145,10 @@ select pg_typeof(myleast(10, 1, 20, 33)); create function dfunc(a int default 1, int default 2) returns int +language sql as $function$ select $1 + $2; -$function$ -language sql; +$function$; select dfunc(); @@ -1166,16 +1166,16 @@ drop function dfunc(int, int); create function dfunc(a int default 1, b int) returns int +language sql as $function$ select $1 + $2; -$function$ -language sql; +$function$; create function dfunc(a int default 1, out sum int, b int default 2) +language sql as $function$ select $1 + $2; -$function$ -language sql; +$function$; select dfunc(); @@ -1183,19 +1183,19 @@ drop function dfunc(int, int); create function dfunc(a int default 1.0, int default '-1') returns int +language sql as $function$ select $1 + $2; -$function$ -language sql; +$function$; select dfunc(); create function dfunc(a text default 'Hello', b text default 'World') returns text +language sql as $function$ select $1 || ', ' || $2; -$function$ -language sql; +$function$; select dfunc(); @@ -1213,10 +1213,10 @@ drop function dfunc(text, text); create function dfunc(int default 1, int default 2) returns int +language sql as $function$ select 2; -$function$ -language sql; +$function$; create function dfunc( @@ -1226,10 +1226,10 @@ dfunc( int default 4 ) returns int +language sql as $function$ select 4; -$function$ -language sql; +$function$; select dfunc(); @@ -1247,17 +1247,17 @@ drop function dfunc(int, int, int, int); create function dfunc(out int default 20) returns int +language sql as $function$ select 1; -$function$ -language sql; +$function$; create function dfunc(anyelement default cast('World' as text)) returns text +language sql as $function$ select 'Hello, ' || $1::text; -$function$ -language sql; +$function$; select dfunc(); @@ -1271,10 +1271,10 @@ drop function dfunc(anyelement); create function dfunc(variadic a int[]) returns int +language sql as $function$ select array_upper($1, 1) -$function$ -language sql; +$function$; select dfunc(); @@ -1287,10 +1287,10 @@ dfunc( variadic a int[] default cast(array[] as int[]) ) returns int +language sql as $function$ select array_upper($1, 1) -$function$ -language sql; +$function$; select dfunc(); @@ -1300,33 +1300,33 @@ select dfunc(10, 20); create or replace function dfunc(variadic a int[]) returns int +language sql as $function$ select array_upper($1, 1) -$function$ -language sql; +$function$; drop function dfunc(int[]); create function dfunc(int default 1, int default 2, int default 3) returns int +language sql as $function$ select 3; -$function$ -language sql; +$function$; create function dfunc(int default 1, int default 2) returns int +language sql as $function$ select 2; -$function$ -language sql; +$function$; create function dfunc(text) returns text +language sql as $function$ select $1; -$function$ -language sql; +$function$; select dfunc(1); @@ -1345,10 +1345,10 @@ returns table ( c int, d int ) +language sql as $function$ select $1, $2, $3, $4; -$function$ -language sql; +$function$; select (dfunc(10, 20, 30)).*; @@ -1380,10 +1380,10 @@ drop function dfunc(int, int, int, int); create function xleast(x numeric, variadic arr numeric[]) returns numeric +language sql as $function$ select least(x, min(arr[i])) from generate_subscripts(arr, 1) g(i); -$function$ -language sql; +$function$; select xleast("x" := 1, variadic "arr" := array[2, 3]); @@ -1415,10 +1415,10 @@ returns table ( b numeric, c date ) +language sql as $function$ select $1, $2, $3; -$function$ -language sql; +$function$; select (dfunc('Hello World', 20, cast('2009-07-25' as date))).*; @@ -1470,10 +1470,10 @@ dfunc( out _c numeric ) returns record +language sql as $function$ select $1, $2; -$function$ -language sql; +$function$; select (dfunc()).*; @@ -1499,10 +1499,10 @@ dfunc( out _c numeric ) returns record +language sql as $function$ select $1, $2; -$function$ -language sql; +$function$; create or replace function dfunc( @@ -1512,47 +1512,47 @@ dfunc( out _c numeric ) returns record +language sql as $function$ select $1, $2; -$function$ -language sql; +$function$; drop function dfunc(varchar, numeric); create function testpolym(a int, a int) returns int +language sql as $function$ select 1; -$function$ -language sql; +$function$; create function testpolym(int, out a int, out a int) returns int +language sql as $function$ select 1; -$function$ -language sql; +$function$; create function testpolym(out a int, inout a int) returns int +language sql as $function$ select 1; -$function$ -language sql; +$function$; create function testpolym(a int, inout a int) returns int +language sql as $function$ select 1; -$function$ -language sql; +$function$; create function testpolym(a int, out a int) returns int +language sql as $function$ select $1; -$function$ -language sql; +$function$; select testpolym(37); @@ -1562,10 +1562,10 @@ create function testpolym(a int) returns table ( a int ) +language sql as $function$ select $1; -$function$ -language sql; +$function$; select * from testpolym(37); @@ -1578,10 +1578,10 @@ dfunc( flag boolean default true ) returns anyelement +language sql as $function$ select case when $3 then $1 else $2 end; -$function$ -language sql; +$function$; select dfunc(1, 2); @@ -1667,10 +1667,10 @@ drop function dfunc(anyelement, anyelement, boolean); create function anyctest(anycompatible, anycompatible) returns anycompatible +language sql as $function$ select greatest($1, $2) -$function$ -language sql; +$function$; select x, pg_typeof(x) from anyctest(11, 12) as x; @@ -1684,10 +1684,10 @@ drop function anyctest(anycompatible, anycompatible); create function anyctest(anycompatible, anycompatible) returns anycompatiblearray +language sql as $function$ select array[$1, $2] -$function$ -language sql; +$function$; select x, pg_typeof(x) from anyctest(11, 12) as x; @@ -1699,10 +1699,10 @@ drop function anyctest(anycompatible, anycompatible); create function anyctest(anycompatible, anycompatiblearray) returns anycompatiblearray +language sql as $function$ select array[$1] || $2 -$function$ -language sql; +$function$; select x, pg_typeof(x) from anyctest(11, array[12]) as x; @@ -1720,10 +1720,10 @@ drop function anyctest(anycompatible, anycompatiblearray); create function anyctest(anycompatible, anycompatiblerange) returns anycompatiblerange +language sql as $function$ select $2 -$function$ -language sql; +$function$; select x, pg_typeof(x) from anyctest(11, int4range(4, 7)) as x; @@ -1739,10 +1739,10 @@ drop function anyctest(anycompatible, anycompatiblerange); create function anyctest(anycompatiblerange, anycompatiblerange) returns anycompatible +language sql as $function$ select lower($1) + upper($2) -$function$ -language sql; +$function$; select x, pg_typeof(x) from anyctest(int4range(11, 12), int4range(4, 7)) as x; @@ -1752,17 +1752,17 @@ drop function anyctest(anycompatiblerange, anycompatiblerange); create function anyctest(anycompatible) returns anycompatiblerange +language sql as $function$ select $1 -$function$ -language sql; +$function$; create function anyctest(anycompatible, anycompatiblemultirange) returns anycompatiblemultirange +language sql as $function$ select $2 -$function$ -language sql; +$function$; select x, pg_typeof(x) from anyctest(11, multirange(int4range(4, 7))) as x; @@ -1778,10 +1778,10 @@ drop function anyctest(anycompatible, anycompatiblemultirange); create function anyctest(anycompatiblemultirange, anycompatiblemultirange) returns anycompatible +language sql as $function$ select lower($1) + upper($2) -$function$ -language sql; +$function$; select x, @@ -1807,17 +1807,17 @@ drop function anyctest(anycompatiblemultirange, anycompatiblemultirange); create function anyctest(anycompatible) returns anycompatiblemultirange +language sql as $function$ select $1 -$function$ -language sql; +$function$; create function anyctest(anycompatiblenonarray, anycompatiblenonarray) returns anycompatiblearray +language sql as $function$ select array[$1, $2] -$function$ -language sql; +$function$; select x, pg_typeof(x) from anyctest(11, 12) as x; @@ -1835,10 +1835,10 @@ anyctest( d anycompatible ) returns anycompatiblearray +language sql as $function$ select array[c, d] -$function$ -language sql; +$function$; select x, pg_typeof(x) from anyctest(11, array[1, 2], 42, 34.5) as x; @@ -1862,10 +1862,10 @@ drop function anyctest(anyelement, anyarray, anycompatible, anycompatible); create function anyctest(variadic anycompatiblearray) returns anycompatiblearray +language sql as $function$ select $1 -$function$ -language sql; +$function$; select x, pg_typeof(x) from anyctest(11, 12) as x; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__privileges_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__privileges_100.snap index 017af8093..d7a90e9df 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__privileges_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__privileges_100.snap @@ -304,12 +304,12 @@ grant REGRESS_PRIV_GROUP2 to regress_priv_user4 with ADMIN true; create function leak(int, int) returns boolean -as $function$ -int4lt -$function$ language internal immutable -strict; +strict +as $function$ +int4lt +$function$; alter function leak(int, int) owner to regress_priv_user1; @@ -530,11 +530,11 @@ set session authorization regress_priv_user2; create function leak2(int, int) returns boolean +language plpgsql +immutable as $function$ begin raise notice 'leak % %', $1, $2; return $1 > $2; end -$function$ -language plpgsql -immutable; +$function$; create operator >>> (PROCEDURE = leak2, LEFTARG = int, RIGHTARG = int, RESTRICT = scalargtsel); @@ -1214,25 +1214,25 @@ grant USAGE on language sql to regress_priv_user2; create function priv_testfunc1(int) returns int +language sql as $function$ select 2 * $1; -$function$ -language sql; +$function$; create function priv_testfunc2(int) returns int +language sql as $function$ select 3 * $1; -$function$ -language sql; +$function$; create aggregate priv_testagg1 (int) (sfunc = int4pl, stype = int); create procedure priv_testproc1(int) +language sql as $procedure$ select $1; -$procedure$ -language sql; +$procedure$; revoke all on function priv_testfunc1(int), priv_testfunc2(int), priv_testagg1(int) from public; @@ -1264,11 +1264,11 @@ grant all on procedure priv_testproc1(int) to regress_priv_user4; create function priv_testfunc4(boolean) returns text +language sql +security definer as $function$ select col1 from atest2 where col2 = $1; -$function$ -language sql -security definer; +$function$; grant EXECUTE on function priv_testfunc4(boolean) to regress_priv_user3; @@ -1278,10 +1278,10 @@ select priv_testfunc1(5), priv_testfunc2(5); create function priv_testfunc3(int) returns int +language sql as $function$ select 2 * $1; -$function$ -language sql; +$function$; select priv_testagg1(x) from (values (1), (2), (3)) as _ (x); @@ -1359,10 +1359,10 @@ create domain priv_testdomain3a as int; create function castfunc(int) returns priv_testdomain3a +language sql as $function$ SELECT $1::priv_testdomain3a -$function$ -language sql; +$function$; create cast (priv_testdomain1 as priv_testdomain3a) with function castfunc(int); @@ -1433,10 +1433,10 @@ create domain priv_testdomain3b as int; create function castfunc(int) returns priv_testdomain3b +language sql as $function$ SELECT $1::priv_testdomain3b -$function$ -language sql; +$function$; create cast (priv_testdomain1 as priv_testdomain3b) with function castfunc(int); @@ -1964,6 +1964,8 @@ create role regress_sro_user; create function sro_ifun(int) returns int +language plpgsql +immutable as $function$ BEGIN -- Below we set the table's owner to regress_sro_user @@ -1971,9 +1973,7 @@ BEGIN format('sro_ifun(%s) called by %s', $1, current_user); RETURN $1; END; -$function$ -language plpgsql -immutable; +$function$; create table sro_tab (a int); @@ -2114,8 +2114,8 @@ set session authorization regress_sro_user; create function unwanted_grant_nofail(int) returns int -immutable language plpgsql +immutable as $function$ BEGIN PERFORM public.unwanted_grant(); @@ -2699,18 +2699,18 @@ set role to regress_priv_user1; create function testns.foo() returns int +language sql as $function$ select 1 -$function$ -language sql; +$function$; create aggregate testns.agg1 (int) (sfunc = int4pl, stype = int); create procedure testns.bar() +language sql as $procedure$ select 1 -$procedure$ -language sql; +$procedure$; select has_function_privilege('regress_priv_user2', 'testns.foo()', 'EXECUTE'); @@ -2724,10 +2724,10 @@ drop function testns.foo(); create function testns.foo() returns int +language sql as $function$ select 1 -$function$ -language sql; +$function$; drop aggregate testns.agg1(int); @@ -2736,10 +2736,10 @@ create aggregate testns.agg1 (int) (sfunc = int4pl, stype = int); drop procedure testns.bar(); create procedure testns.bar() +language sql as $procedure$ select 1 -$procedure$ -language sql; +$procedure$; select has_function_privilege('regress_priv_user2', 'testns.foo()', 'EXECUTE'); @@ -2823,18 +2823,18 @@ select has_table_privilege('regress_priv_user1', 'testns.t2', 'SELECT'); create function testns.priv_testfunc(int) returns int +language sql as $function$ select 3 * $1; -$function$ -language sql; +$function$; create aggregate testns.priv_testagg (int) (sfunc = int4pl, stype = int); create procedure testns.priv_testproc(int) +language sql as $procedure$ select 3 -$procedure$ -language sql; +$procedure$; select has_function_privilege('regress_priv_user1', 'testns.priv_testfunc(int)', 'EXECUTE'); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__privileges_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__privileges_80.snap index 6fd45bdae..ebfd9388d 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__privileges_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__privileges_80.snap @@ -350,12 +350,12 @@ grant REGRESS_PRIV_GROUP2 to regress_priv_user4 with ADMIN true; create function leak(int, int) returns boolean -as $function$ -int4lt -$function$ language internal immutable -strict; +strict +as $function$ +int4lt +$function$; alter function leak(int, int) owner to regress_priv_user1; @@ -615,11 +615,11 @@ set session authorization regress_priv_user2; create function leak2(int, int) returns boolean +language plpgsql +immutable as $function$ begin raise notice 'leak % %', $1, $2; return $1 > $2; end -$function$ -language plpgsql -immutable; +$function$; create operator >>> (PROCEDURE = leak2, LEFTARG = int, @@ -1467,25 +1467,25 @@ grant USAGE on language sql to regress_priv_user2; create function priv_testfunc1(int) returns int +language sql as $function$ select 2 * $1; -$function$ -language sql; +$function$; create function priv_testfunc2(int) returns int +language sql as $function$ select 3 * $1; -$function$ -language sql; +$function$; create aggregate priv_testagg1 (int) (sfunc = int4pl, stype = int); create procedure priv_testproc1(int) +language sql as $procedure$ select $1; -$procedure$ -language sql; +$procedure$; revoke all on function priv_testfunc1(int), @@ -1521,11 +1521,11 @@ grant all on procedure priv_testproc1(int) to regress_priv_user4; create function priv_testfunc4(boolean) returns text +language sql +security definer as $function$ select col1 from atest2 where col2 = $1; -$function$ -language sql -security definer; +$function$; grant EXECUTE on function priv_testfunc4(boolean) to regress_priv_user3; @@ -1535,10 +1535,10 @@ select priv_testfunc1(5), priv_testfunc2(5); create function priv_testfunc3(int) returns int +language sql as $function$ select 2 * $1; -$function$ -language sql; +$function$; select priv_testagg1(x) from (values (1), (2), (3)) as _ (x); @@ -1621,10 +1621,10 @@ create domain priv_testdomain3a as int; create function castfunc(int) returns priv_testdomain3a +language sql as $function$ SELECT $1::priv_testdomain3a -$function$ -language sql; +$function$; create cast (priv_testdomain1 as priv_testdomain3a) with function castfunc(int); @@ -1702,10 +1702,10 @@ create domain priv_testdomain3b as int; create function castfunc(int) returns priv_testdomain3b +language sql as $function$ SELECT $1::priv_testdomain3b -$function$ -language sql; +$function$; create cast (priv_testdomain1 as priv_testdomain3b) with function castfunc(int); @@ -2316,6 +2316,8 @@ create role regress_sro_user; create function sro_ifun(int) returns int +language plpgsql +immutable as $function$ BEGIN -- Below we set the table's owner to regress_sro_user @@ -2323,9 +2325,7 @@ BEGIN format('sro_ifun(%s) called by %s', $1, current_user); RETURN $1; END; -$function$ -language plpgsql -immutable; +$function$; create table sro_tab (a int); @@ -2471,8 +2471,8 @@ set session authorization regress_sro_user; create function unwanted_grant_nofail(int) returns int -immutable language plpgsql +immutable as $function$ BEGIN PERFORM public.unwanted_grant(); @@ -3094,18 +3094,18 @@ set role to regress_priv_user1; create function testns.foo() returns int +language sql as $function$ select 1 -$function$ -language sql; +$function$; create aggregate testns.agg1 (int) (sfunc = int4pl, stype = int); create procedure testns.bar() +language sql as $procedure$ select 1 -$procedure$ -language sql; +$procedure$; select has_function_privilege('regress_priv_user2', 'testns.foo()', 'EXECUTE'); @@ -3124,10 +3124,10 @@ drop function testns.foo(); create function testns.foo() returns int +language sql as $function$ select 1 -$function$ -language sql; +$function$; drop aggregate testns.agg1(int); @@ -3136,10 +3136,10 @@ create aggregate testns.agg1 (int) (sfunc = int4pl, stype = int); drop procedure testns.bar(); create procedure testns.bar() +language sql as $procedure$ select 1 -$procedure$ -language sql; +$procedure$; select has_function_privilege('regress_priv_user2', 'testns.foo()', 'EXECUTE'); @@ -3240,18 +3240,18 @@ select has_table_privilege('regress_priv_user1', 'testns.t2', 'SELECT'); create function testns.priv_testfunc(int) returns int +language sql as $function$ select 3 * $1; -$function$ -language sql; +$function$; create aggregate testns.priv_testagg (int) (sfunc = int4pl, stype = int); create procedure testns.priv_testproc(int) +language sql as $procedure$ select 3 -$procedure$ -language sql; +$procedure$; select has_function_privilege( diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__publication_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__publication_100.snap index 99bd68592..df5c75958 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__publication_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__publication_100.snap @@ -285,10 +285,10 @@ alter publication testpub5 set table testpub_rf_tbl3 where ( e < AVG(e)); create function testpub_rf_func1(int, int) returns boolean +language sql as $function$ SELECT hashint4($1) > $2 -$function$ -language sql; +$function$; create operator =#> (PROCEDURE = testpub_rf_func1, LEFTARG = int, RIGHTARG = int); @@ -296,11 +296,11 @@ create publication testpub6 for table testpub_rf_tbl3 where (e =#> 27); create function testpub_rf_func2() returns int +language plpgsql immutable as $function$ BEGIN RETURN 123; END; -$function$ -language plpgsql; +$function$; alter publication testpub5 add table testpub_rf_tbl1 where ( a >= testpub_rf_func2()); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__publication_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__publication_80.snap index 6ca6a53c5..656ea8f95 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__publication_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__publication_80.snap @@ -304,10 +304,10 @@ alter publication testpub5 set table testpub_rf_tbl3 where ( e < AVG(e)); create function testpub_rf_func1(int, int) returns boolean +language sql as $function$ SELECT hashint4($1) > $2 -$function$ -language sql; +$function$; create operator =#> (PROCEDURE = testpub_rf_func1, LEFTARG = int, @@ -317,11 +317,11 @@ create publication testpub6 for table testpub_rf_tbl3 where (e =#> 27); create function testpub_rf_func2() returns int +language plpgsql immutable as $function$ BEGIN RETURN 123; END; -$function$ -language plpgsql; +$function$; alter publication testpub5 add table testpub_rf_tbl1 diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__random_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__random_100.snap index b1b677b8f..4bfc35943 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__random_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__random_100.snap @@ -1,7 +1,6 @@ --- source: crates/pgls_pretty_print/tests/tests.rs input_file: crates/pgls_pretty_print/tests/data/multi/random.sql -snapshot_kind: text --- select r, @@ -28,6 +27,7 @@ from create function ks_test_uniform_random() returns boolean +language plpgsql as $function$ DECLARE n int := 1000; -- Number of samples @@ -44,8 +44,7 @@ BEGIN ); RETURN ok; END -$function$ -language plpgsql; +$function$; select ks_test_uniform_random() or ks_test_uniform_random() or ks_test_uniform_random() as uniform; @@ -92,6 +91,7 @@ group by r; create function ks_test_normal_random() returns boolean +language plpgsql as $function$ DECLARE n int := 1000; -- Number of samples @@ -109,8 +109,7 @@ BEGIN ); RETURN ok; END -$function$ -language plpgsql; +$function$; select ks_test_normal_random() or @@ -310,6 +309,7 @@ from create function ks_test_uniform_random_int_in_range() returns boolean +language plpgsql as $function$ DECLARE n int := 1000; -- Number of samples @@ -326,8 +326,7 @@ BEGIN ); RETURN ok; END -$function$ -language plpgsql; +$function$; select ks_test_uniform_random_int_in_range() or @@ -337,6 +336,7 @@ select create function ks_test_uniform_random_bigint_in_range() returns boolean +language plpgsql as $function$ DECLARE n int := 1000; -- Number of samples @@ -353,8 +353,7 @@ BEGIN ); RETURN ok; END -$function$ -language plpgsql; +$function$; select ks_test_uniform_random_bigint_in_range() or @@ -364,6 +363,7 @@ select create function ks_test_uniform_random_numeric_in_range() returns boolean +language plpgsql as $function$ DECLARE n int := 1000; -- Number of samples @@ -380,8 +380,7 @@ BEGIN ); RETURN ok; END -$function$ -language plpgsql; +$function$; select ks_test_uniform_random_numeric_in_range() or diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__random_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__random_80.snap index 9dd7bd2f9..6846b2b77 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__random_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__random_80.snap @@ -1,7 +1,6 @@ --- source: crates/pgls_pretty_print/tests/tests.rs input_file: crates/pgls_pretty_print/tests/data/multi/random.sql -snapshot_kind: text --- select r, @@ -36,6 +35,7 @@ from create function ks_test_uniform_random() returns boolean +language plpgsql as $function$ DECLARE n int := 1000; -- Number of samples @@ -52,8 +52,7 @@ BEGIN ); RETURN ok; END -$function$ -language plpgsql; +$function$; select ks_test_uniform_random() or @@ -104,6 +103,7 @@ group by r; create function ks_test_normal_random() returns boolean +language plpgsql as $function$ DECLARE n int := 1000; -- Number of samples @@ -121,8 +121,7 @@ BEGIN ); RETURN ok; END -$function$ -language plpgsql; +$function$; select ks_test_normal_random() or @@ -362,6 +361,7 @@ from create function ks_test_uniform_random_int_in_range() returns boolean +language plpgsql as $function$ DECLARE n int := 1000; -- Number of samples @@ -378,8 +378,7 @@ BEGIN ); RETURN ok; END -$function$ -language plpgsql; +$function$; select ks_test_uniform_random_int_in_range() or @@ -389,6 +388,7 @@ select create function ks_test_uniform_random_bigint_in_range() returns boolean +language plpgsql as $function$ DECLARE n int := 1000; -- Number of samples @@ -405,8 +405,7 @@ BEGIN ); RETURN ok; END -$function$ -language plpgsql; +$function$; select ks_test_uniform_random_bigint_in_range() or @@ -416,6 +415,7 @@ select create function ks_test_uniform_random_numeric_in_range() returns boolean +language plpgsql as $function$ DECLARE n int := 1000; -- Number of samples @@ -432,8 +432,7 @@ BEGIN ); RETURN ok; END -$function$ -language plpgsql; +$function$; select ks_test_uniform_random_numeric_in_range() or diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__rangefuncs_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__rangefuncs_100.snap index f8001187b..37d2f0adc 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__rangefuncs_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__rangefuncs_100.snap @@ -15,10 +15,10 @@ insert into rngfunc2 values (1, 111); create function rngfunct(int) returns setof rngfunc2 +language sql as $function$ SELECT * FROM rngfunc2 WHERE rngfuncid = $1 ORDER BY f2; -$function$ -language sql; +$function$; select * from rngfunct(1) with ordinality as z (a, b, ord); @@ -271,10 +271,10 @@ insert into rngfunc values (2, 1, 'Mary'); create function getrngfunc1(int) returns int +language sql as $function$ SELECT $1; -$function$ -language sql; +$function$; select * from getrngfunc1(1) as t1; @@ -299,10 +299,10 @@ drop view vw_getrngfunc; create function getrngfunc2(int) returns setof int +language sql as $function$ SELECT rngfuncid FROM rngfunc WHERE rngfuncid = $1; -$function$ -language sql; +$function$; select * from getrngfunc2(1) as t1; @@ -327,10 +327,10 @@ drop view vw_getrngfunc; create function getrngfunc3(int) returns setof text +language sql as $function$ SELECT rngfuncname FROM rngfunc WHERE rngfuncid = $1; -$function$ -language sql; +$function$; select * from getrngfunc3(1) as t1; @@ -355,10 +355,10 @@ drop view vw_getrngfunc; create function getrngfunc4(int) returns rngfunc +language sql as $function$ SELECT * FROM rngfunc WHERE rngfuncid = $1; -$function$ -language sql; +$function$; select * from getrngfunc4(1) as t1; @@ -383,10 +383,10 @@ drop view vw_getrngfunc; create function getrngfunc5(int) returns setof rngfunc +language sql as $function$ SELECT * FROM rngfunc WHERE rngfuncid = $1; -$function$ -language sql; +$function$; select * from getrngfunc5(1) as t1; @@ -411,10 +411,10 @@ drop view vw_getrngfunc; create function getrngfunc6(int) returns record +language sql as $function$ SELECT * FROM rngfunc WHERE rngfuncid = $1; -$function$ -language sql; +$function$; select * from getrngfunc6(1) as t1 (rngfuncid int, rngfuncsubid int, rngfuncname text); @@ -452,10 +452,10 @@ drop view vw_getrngfunc; create function getrngfunc7(int) returns setof record +language sql as $function$ SELECT * FROM rngfunc WHERE rngfuncid = $1; -$function$ -language sql; +$function$; select * from getrngfunc7(1) as t1 (rngfuncid int, rngfuncsubid int, rngfuncname text); @@ -493,10 +493,10 @@ drop view vw_getrngfunc; create function getrngfunc8(int) returns int +language plpgsql as $function$ DECLARE rngfuncint int; BEGIN SELECT rngfuncid into rngfuncint FROM rngfunc WHERE rngfuncid = $1; RETURN rngfuncint; END; -$function$ -language plpgsql; +$function$; select * from getrngfunc8(1) as t1; @@ -521,10 +521,10 @@ drop view vw_getrngfunc; create function getrngfunc9(int) returns rngfunc +language plpgsql as $function$ DECLARE rngfunctup rngfunc%ROWTYPE; BEGIN SELECT * into rngfunctup FROM rngfunc WHERE rngfuncid = $1; RETURN rngfunctup; END; -$function$ -language plpgsql; +$function$; select * from getrngfunc9(1) as t1; @@ -665,17 +665,17 @@ create type rngfunc_rescan_t as (i int, s bigint); create function rngfunc_sql(int, int) returns setof rngfunc_rescan_t +language sql as $function$ SELECT i, nextval('rngfunc_rescan_seq1') FROM generate_series($1,$2) i; -$function$ -language sql; +$function$; create function rngfunc_mat(int, int) returns setof rngfunc_rescan_t +language plpgsql as $function$ begin for i in $1..$2 loop return next (i, nextval('rngfunc_rescan_seq2')); end loop; end; -$function$ -language plpgsql; +$function$; select setval('rngfunc_rescan_seq1', 1, false), setval('rngfunc_rescan_seq2', 1, false); @@ -1003,10 +1003,10 @@ drop sequence rngfunc_rescan_seq1; drop sequence rngfunc_rescan_seq2; create function rngfunc(in f1 int, out f2 int) +language sql as $function$ select $1+1 -$function$ -language sql; +$function$; select rngfunc(42); @@ -1016,37 +1016,37 @@ select * from rngfunc(42) as p (x); create or replace function rngfunc(in f1 int, out f2 int) returns int +language sql as $function$ select $1+1 -$function$ -language sql; +$function$; create or replace function rngfunc(in f1 int, out f2 int) returns double precision +language sql as $function$ select $1+1 -$function$ -language sql; +$function$; create or replace function rngfunc(in f1 int, out f2 int, out f3 text) returns int +language sql as $function$ select $1+1 -$function$ -language sql; +$function$; create or replace function rngfunc(in f1 int, out f2 int, out f3 text) returns record +language sql as $function$ select $1+1 -$function$ -language sql; +$function$; create or replace function rngfuncr(in f1 int, out f2 int, out text) +language sql as $function$ select $1-1, $1::text || 'z' -$function$ -language sql; +$function$; select f1, rngfuncr(f1) from int4_tbl; @@ -1055,10 +1055,10 @@ select * from rngfuncr(42); select * from rngfuncr(42) as p (a, b); create or replace function rngfuncb(in f1 int, inout f2 int, out text) +language sql as $function$ select $2-1, $1::text || 'z' -$function$ -language sql; +$function$; select f1, rngfuncb(f1, f1 / 2) from int4_tbl; @@ -1073,10 +1073,10 @@ drop function rngfuncr(int); drop function rngfuncb(int, int); create function dup(f1 anyelement, out f2 anyelement, out f3 anyarray) +language sql as $function$ select $1, array[$1,$1] -$function$ -language sql; +$function$; select dup(22); @@ -1087,28 +1087,28 @@ select dup(cast('xyz' as text)); select * from dup(cast('xyz' as text)); create or replace function dup(inout f2 anyelement, out f3 anyarray) +language sql as $function$ select $1, array[$1,$1] -$function$ -language sql; +$function$; drop function dup(anyelement); create or replace function dup(inout f2 anyelement, out f3 anyarray) +language sql as $function$ select $1, array[$1,$1] -$function$ -language sql; +$function$; select dup(22); drop function dup(anyelement); create function bad(f1 int, out f2 anyelement, out f3 anyarray) +language sql as $function$ select $1, array[$1,$1] -$function$ -language sql; +$function$; create function dup( @@ -1117,10 +1117,10 @@ dup( out f3 anycompatible, out f4 anycompatiblearray ) +language sql as $function$ select $1, $2 -$function$ -language sql; +$function$; select dup(22, array[44]); @@ -1139,10 +1139,10 @@ dup( out f3 anycompatiblearray, out f4 anycompatiblerange ) +language sql as $function$ select lower($1), array[lower($1), upper($1)], $1 -$function$ -language sql; +$function$; select dup(int4range(4, 7)); @@ -1153,19 +1153,19 @@ select dup(textrange('aaa', 'bbb')); drop function dup(anycompatiblerange); create function bad(f1 anyarray, out f2 anycompatible, out f3 anycompatiblearray) +language sql as $function$ select $1, array[$1,$1] -$function$ -language sql; +$function$; create or replace function rngfunc() returns table ( a int ) +language sql as $function$ SELECT a FROM generate_series(1,5) a(a) -$function$ -language sql; +$function$; select * from rngfunc(); @@ -1176,12 +1176,12 @@ returns table ( a int, b int ) +language sql as $function$ SELECT a, b FROM generate_series(1,$1) a(a), generate_series(1,$1) b(b) -$function$ -language sql; +$function$; select * from rngfunc(3); @@ -1191,11 +1191,11 @@ create or replace function rngfunc() returns table ( a varchar(5) ) +language sql +stable as $function$ SELECT 'hello'::varchar(5) -$function$ -language sql -stable; +$function$; select * from rngfunc() group by 1; @@ -1208,10 +1208,10 @@ create temporary table tt ( create function insert_tt(text) returns int +language sql as $function$ insert into tt(data) values($1) returning f1 -$function$ -language sql; +$function$; select insert_tt('foo'); @@ -1221,10 +1221,10 @@ select * from tt; create or replace function insert_tt(text) returns int +language sql as $function$ insert into tt(data) values($1),($1||$1) returning f1 -$function$ -language sql; +$function$; select insert_tt('fool'); @@ -1232,10 +1232,10 @@ select * from tt; create or replace function insert_tt2(text, text) returns setof int +language sql as $function$ insert into tt(data) values($1),($2) returning f1 -$function$ -language sql; +$function$; select insert_tt2('foolish', 'barrish'); @@ -1249,13 +1249,13 @@ select * from tt; create function noticetrigger() returns trigger +language plpgsql as $function$ begin raise notice 'noticetrigger % %', new.f1, new.data; return null; end -$function$ -language plpgsql; +$function$; create trigger tnoticetrigger after insert on tt for each row execute function noticetrigger(); @@ -1298,12 +1298,12 @@ drop function rngfunc1(int); create function array_to_set(anyarray) returns setof record -as $function$ -select i AS "index", $1[i] AS "value" from generate_subscripts($1, 1) i -$function$ language sql +immutable strict -immutable; +as $function$ +select i AS "index", $1[i] AS "value" from generate_subscripts($1, 1) i +$function$; select array_to_set(array['one', 'two']); @@ -1319,11 +1319,11 @@ select * from array_to_set(array['one', 'two']) as t (f1 numeric(4, 2), f2 text) create or replace function array_to_set(anyarray) returns setof record +language sql +immutable as $function$ select i AS "index", $1[i] AS "value" from generate_subscripts($1, 1) i -$function$ -language sql -immutable; +$function$; select array_to_set(array['one', 'two']); @@ -1342,10 +1342,10 @@ create temporary table rngfunc ( create function testrngfunc() returns record +language sql as $function$ insert into rngfunc values (1,2) returning *; -$function$ -language sql; +$function$; select testrngfunc(); @@ -1357,10 +1357,10 @@ drop function testrngfunc(); create function testrngfunc() returns setof record +language sql as $function$ insert into rngfunc values (1,2), (3,4) returning *; -$function$ -language sql; +$function$; select testrngfunc(); @@ -1374,11 +1374,11 @@ create type rngfunc_type as (f1 numeric(35, 6), f2 numeric(35, 2)); create function testrngfunc() returns rngfunc_type +language sql +immutable as $function$ select 7.136178319899999964, 7.136178319899999964; -$function$ -language sql -immutable; +$function$; select testrngfunc(); @@ -1390,11 +1390,11 @@ select * from testrngfunc(); create or replace function testrngfunc() returns rngfunc_type +language sql +volatile as $function$ select 7.136178319899999964, 7.136178319899999964; -$function$ -language sql -volatile; +$function$; select testrngfunc(); @@ -1408,11 +1408,11 @@ drop function testrngfunc(); create function testrngfunc() returns setof rngfunc_type +language sql +immutable as $function$ select 7.136178319899999964, 7.136178319899999964; -$function$ -language sql -immutable; +$function$; select testrngfunc(); @@ -1424,11 +1424,11 @@ select * from testrngfunc(); create or replace function testrngfunc() returns setof rngfunc_type +language sql +volatile as $function$ select 7.136178319899999964, 7.136178319899999964; -$function$ -language sql -volatile; +$function$; select testrngfunc(); @@ -1440,11 +1440,11 @@ select * from testrngfunc(); create or replace function testrngfunc() returns setof rngfunc_type +language sql +immutable as $function$ select 1, 2 union select 3, 4 order by 1; -$function$ -language sql -immutable; +$function$; select testrngfunc(); @@ -1480,11 +1480,11 @@ alter table users create or replace function get_first_user() returns users +language sql +stable as $function$ SELECT * FROM users ORDER BY userid LIMIT 1; -$function$ -language sql -stable; +$function$; select get_first_user(); @@ -1492,11 +1492,11 @@ select * from get_first_user(); create or replace function get_users() returns setof users +language sql +stable as $function$ SELECT * FROM users ORDER BY userid; -$function$ -language sql -stable; +$function$; select get_users(); @@ -1603,11 +1603,11 @@ drop table users; create or replace function rngfuncbar() returns setof text +language sql +stable as $function$ select 'foo'::varchar union all select 'bar'::varchar ; -$function$ -language sql -stable; +$function$; select rngfuncbar(); @@ -1618,26 +1618,26 @@ select * from rngfuncbar(); drop function rngfuncbar(); create or replace function rngfuncbar(out int, out numeric) +language sql as $function$ select (1, 2.1) -$function$ -language sql; +$function$; select * from rngfuncbar(); create or replace function rngfuncbar(out int, out numeric) +language sql as $function$ select (1, 2) -$function$ -language sql; +$function$; select * from rngfuncbar(); create or replace function rngfuncbar(out int, out numeric) +language sql as $function$ select (1, 2.1, 3) -$function$ -language sql; +$function$; select * from rngfuncbar(); @@ -1645,11 +1645,11 @@ drop function rngfuncbar(); create function extractq2(t int8_tbl) returns bigint +language sql +immutable as $function$ select t.q2 -$function$ -language sql -immutable; +$function$; select x from int8_tbl, extractq2(int8_tbl) as f (x); @@ -1659,11 +1659,11 @@ create function extractq2_2(t int8_tbl) returns table ( ret1 bigint ) +language sql +immutable as $function$ select extractq2(t) offset 0 -$function$ -language sql -immutable; +$function$; select x from int8_tbl, extractq2_2(int8_tbl) as f (x); @@ -1673,11 +1673,11 @@ create function extractq2_2_opt(t int8_tbl) returns table ( ret1 bigint ) +language sql +immutable as $function$ select extractq2(t) -$function$ -language sql -immutable; +$function$; select x from int8_tbl, extractq2_2_opt(int8_tbl) as f (x); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__rangefuncs_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__rangefuncs_80.snap index f6116e851..3cf388bae 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__rangefuncs_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__rangefuncs_80.snap @@ -15,10 +15,10 @@ insert into rngfunc2 values (1, 111); create function rngfunct(int) returns setof rngfunc2 +language sql as $function$ SELECT * FROM rngfunc2 WHERE rngfuncid = $1 ORDER BY f2; -$function$ -language sql; +$function$; select * from rngfunct(1) with ordinality as z (a, b, ord); @@ -312,10 +312,10 @@ insert into rngfunc values (2, 1, 'Mary'); create function getrngfunc1(int) returns int +language sql as $function$ SELECT $1; -$function$ -language sql; +$function$; select * from getrngfunc1(1) as t1; @@ -342,10 +342,10 @@ drop view vw_getrngfunc; create function getrngfunc2(int) returns setof int +language sql as $function$ SELECT rngfuncid FROM rngfunc WHERE rngfuncid = $1; -$function$ -language sql; +$function$; select * from getrngfunc2(1) as t1; @@ -372,10 +372,10 @@ drop view vw_getrngfunc; create function getrngfunc3(int) returns setof text +language sql as $function$ SELECT rngfuncname FROM rngfunc WHERE rngfuncid = $1; -$function$ -language sql; +$function$; select * from getrngfunc3(1) as t1; @@ -402,10 +402,10 @@ drop view vw_getrngfunc; create function getrngfunc4(int) returns rngfunc +language sql as $function$ SELECT * FROM rngfunc WHERE rngfuncid = $1; -$function$ -language sql; +$function$; select * from getrngfunc4(1) as t1; @@ -432,10 +432,10 @@ drop view vw_getrngfunc; create function getrngfunc5(int) returns setof rngfunc +language sql as $function$ SELECT * FROM rngfunc WHERE rngfuncid = $1; -$function$ -language sql; +$function$; select * from getrngfunc5(1) as t1; @@ -462,10 +462,10 @@ drop view vw_getrngfunc; create function getrngfunc6(int) returns record +language sql as $function$ SELECT * FROM rngfunc WHERE rngfuncid = $1; -$function$ -language sql; +$function$; select * @@ -516,10 +516,10 @@ drop view vw_getrngfunc; create function getrngfunc7(int) returns setof record +language sql as $function$ SELECT * FROM rngfunc WHERE rngfuncid = $1; -$function$ -language sql; +$function$; select * @@ -570,10 +570,10 @@ drop view vw_getrngfunc; create function getrngfunc8(int) returns int +language plpgsql as $function$ DECLARE rngfuncint int; BEGIN SELECT rngfuncid into rngfuncint FROM rngfunc WHERE rngfuncid = $1; RETURN rngfuncint; END; -$function$ -language plpgsql; +$function$; select * from getrngfunc8(1) as t1; @@ -600,10 +600,10 @@ drop view vw_getrngfunc; create function getrngfunc9(int) returns rngfunc +language plpgsql as $function$ DECLARE rngfunctup rngfunc%ROWTYPE; BEGIN SELECT * into rngfunctup FROM rngfunc WHERE rngfuncid = $1; RETURN rngfunctup; END; -$function$ -language plpgsql; +$function$; select * from getrngfunc9(1) as t1; @@ -756,17 +756,17 @@ create type rngfunc_rescan_t as (i int, s bigint); create function rngfunc_sql(int, int) returns setof rngfunc_rescan_t +language sql as $function$ SELECT i, nextval('rngfunc_rescan_seq1') FROM generate_series($1,$2) i; -$function$ -language sql; +$function$; create function rngfunc_mat(int, int) returns setof rngfunc_rescan_t +language plpgsql as $function$ begin for i in $1..$2 loop return next (i, nextval('rngfunc_rescan_seq2')); end loop; end; -$function$ -language plpgsql; +$function$; select setval('rngfunc_rescan_seq1', 1, false), @@ -1179,10 +1179,10 @@ drop sequence rngfunc_rescan_seq1; drop sequence rngfunc_rescan_seq2; create function rngfunc(in f1 int, out f2 int) +language sql as $function$ select $1+1 -$function$ -language sql; +$function$; select rngfunc(42); @@ -1192,37 +1192,37 @@ select * from rngfunc(42) as p (x); create or replace function rngfunc(in f1 int, out f2 int) returns int +language sql as $function$ select $1+1 -$function$ -language sql; +$function$; create or replace function rngfunc(in f1 int, out f2 int) returns double precision +language sql as $function$ select $1+1 -$function$ -language sql; +$function$; create or replace function rngfunc(in f1 int, out f2 int, out f3 text) returns int +language sql as $function$ select $1+1 -$function$ -language sql; +$function$; create or replace function rngfunc(in f1 int, out f2 int, out f3 text) returns record +language sql as $function$ select $1+1 -$function$ -language sql; +$function$; create or replace function rngfuncr(in f1 int, out f2 int, out text) +language sql as $function$ select $1-1, $1::text || 'z' -$function$ -language sql; +$function$; select f1, rngfuncr(f1) from int4_tbl; @@ -1231,10 +1231,10 @@ select * from rngfuncr(42); select * from rngfuncr(42) as p (a, b); create or replace function rngfuncb(in f1 int, inout f2 int, out text) +language sql as $function$ select $2-1, $1::text || 'z' -$function$ -language sql; +$function$; select f1, rngfuncb(f1, f1 / 2) from int4_tbl; @@ -1249,10 +1249,10 @@ drop function rngfuncr(int); drop function rngfuncb(int, int); create function dup(f1 anyelement, out f2 anyelement, out f3 anyarray) +language sql as $function$ select $1, array[$1,$1] -$function$ -language sql; +$function$; select dup(22); @@ -1263,28 +1263,28 @@ select dup(cast('xyz' as text)); select * from dup(cast('xyz' as text)); create or replace function dup(inout f2 anyelement, out f3 anyarray) +language sql as $function$ select $1, array[$1,$1] -$function$ -language sql; +$function$; drop function dup(anyelement); create or replace function dup(inout f2 anyelement, out f3 anyarray) +language sql as $function$ select $1, array[$1,$1] -$function$ -language sql; +$function$; select dup(22); drop function dup(anyelement); create function bad(f1 int, out f2 anyelement, out f3 anyarray) +language sql as $function$ select $1, array[$1,$1] -$function$ -language sql; +$function$; create function dup( @@ -1293,10 +1293,10 @@ dup( out f3 anycompatible, out f4 anycompatiblearray ) +language sql as $function$ select $1, $2 -$function$ -language sql; +$function$; select dup(22, array[44]); @@ -1315,10 +1315,10 @@ dup( out f3 anycompatiblearray, out f4 anycompatiblerange ) +language sql as $function$ select lower($1), array[lower($1), upper($1)], $1 -$function$ -language sql; +$function$; select dup(int4range(4, 7)); @@ -1334,19 +1334,19 @@ bad( out f2 anycompatible, out f3 anycompatiblearray ) +language sql as $function$ select $1, array[$1,$1] -$function$ -language sql; +$function$; create or replace function rngfunc() returns table ( a int ) +language sql as $function$ SELECT a FROM generate_series(1,5) a(a) -$function$ -language sql; +$function$; select * from rngfunc(); @@ -1357,12 +1357,12 @@ returns table ( a int, b int ) +language sql as $function$ SELECT a, b FROM generate_series(1,$1) a(a), generate_series(1,$1) b(b) -$function$ -language sql; +$function$; select * from rngfunc(3); @@ -1372,11 +1372,11 @@ create or replace function rngfunc() returns table ( a varchar(5) ) +language sql +stable as $function$ SELECT 'hello'::varchar(5) -$function$ -language sql -stable; +$function$; select * from rngfunc() group by 1; @@ -1389,10 +1389,10 @@ create temporary table tt ( create function insert_tt(text) returns int +language sql as $function$ insert into tt(data) values($1) returning f1 -$function$ -language sql; +$function$; select insert_tt('foo'); @@ -1402,10 +1402,10 @@ select * from tt; create or replace function insert_tt(text) returns int +language sql as $function$ insert into tt(data) values($1),($1||$1) returning f1 -$function$ -language sql; +$function$; select insert_tt('fool'); @@ -1413,10 +1413,10 @@ select * from tt; create or replace function insert_tt2(text, text) returns setof int +language sql as $function$ insert into tt(data) values($1),($2) returning f1 -$function$ -language sql; +$function$; select insert_tt2('foolish', 'barrish'); @@ -1430,13 +1430,13 @@ select * from tt; create function noticetrigger() returns trigger +language plpgsql as $function$ begin raise notice 'noticetrigger % %', new.f1, new.data; return null; end -$function$ -language plpgsql; +$function$; create trigger tnoticetrigger after insert @@ -1483,12 +1483,12 @@ drop function rngfunc1(int); create function array_to_set(anyarray) returns setof record -as $function$ -select i AS "index", $1[i] AS "value" from generate_subscripts($1, 1) i -$function$ language sql +immutable strict -immutable; +as $function$ +select i AS "index", $1[i] AS "value" from generate_subscripts($1, 1) i +$function$; select array_to_set(array['one', 'two']); @@ -1514,11 +1514,11 @@ from create or replace function array_to_set(anyarray) returns setof record +language sql +immutable as $function$ select i AS "index", $1[i] AS "value" from generate_subscripts($1, 1) i -$function$ -language sql -immutable; +$function$; select array_to_set(array['one', 'two']); @@ -1547,10 +1547,10 @@ create temporary table rngfunc ( create function testrngfunc() returns record +language sql as $function$ insert into rngfunc values (1,2) returning *; -$function$ -language sql; +$function$; select testrngfunc(); @@ -1562,10 +1562,10 @@ drop function testrngfunc(); create function testrngfunc() returns setof record +language sql as $function$ insert into rngfunc values (1,2), (3,4) returning *; -$function$ -language sql; +$function$; select testrngfunc(); @@ -1579,11 +1579,11 @@ create type rngfunc_type as (f1 numeric(35, 6), f2 numeric(35, 2)); create function testrngfunc() returns rngfunc_type +language sql +immutable as $function$ select 7.136178319899999964, 7.136178319899999964; -$function$ -language sql -immutable; +$function$; select testrngfunc(); @@ -1595,11 +1595,11 @@ select * from testrngfunc(); create or replace function testrngfunc() returns rngfunc_type +language sql +volatile as $function$ select 7.136178319899999964, 7.136178319899999964; -$function$ -language sql -volatile; +$function$; select testrngfunc(); @@ -1613,11 +1613,11 @@ drop function testrngfunc(); create function testrngfunc() returns setof rngfunc_type +language sql +immutable as $function$ select 7.136178319899999964, 7.136178319899999964; -$function$ -language sql -immutable; +$function$; select testrngfunc(); @@ -1629,11 +1629,11 @@ select * from testrngfunc(); create or replace function testrngfunc() returns setof rngfunc_type +language sql +volatile as $function$ select 7.136178319899999964, 7.136178319899999964; -$function$ -language sql -volatile; +$function$; select testrngfunc(); @@ -1645,11 +1645,11 @@ select * from testrngfunc(); create or replace function testrngfunc() returns setof rngfunc_type +language sql +immutable as $function$ select 1, 2 union select 3, 4 order by 1; -$function$ -language sql -immutable; +$function$; select testrngfunc(); @@ -1685,11 +1685,11 @@ alter table users create or replace function get_first_user() returns users +language sql +stable as $function$ SELECT * FROM users ORDER BY userid LIMIT 1; -$function$ -language sql -stable; +$function$; select get_first_user(); @@ -1697,11 +1697,11 @@ select * from get_first_user(); create or replace function get_users() returns setof users +language sql +stable as $function$ SELECT * FROM users ORDER BY userid; -$function$ -language sql -stable; +$function$; select get_users(); @@ -1816,11 +1816,11 @@ drop table users; create or replace function rngfuncbar() returns setof text +language sql +stable as $function$ select 'foo'::varchar union all select 'bar'::varchar ; -$function$ -language sql -stable; +$function$; select rngfuncbar(); @@ -1831,26 +1831,26 @@ select * from rngfuncbar(); drop function rngfuncbar(); create or replace function rngfuncbar(out int, out numeric) +language sql as $function$ select (1, 2.1) -$function$ -language sql; +$function$; select * from rngfuncbar(); create or replace function rngfuncbar(out int, out numeric) +language sql as $function$ select (1, 2) -$function$ -language sql; +$function$; select * from rngfuncbar(); create or replace function rngfuncbar(out int, out numeric) +language sql as $function$ select (1, 2.1, 3) -$function$ -language sql; +$function$; select * from rngfuncbar(); @@ -1858,11 +1858,11 @@ drop function rngfuncbar(); create function extractq2(t int8_tbl) returns bigint +language sql +immutable as $function$ select t.q2 -$function$ -language sql -immutable; +$function$; select x from int8_tbl, extractq2(int8_tbl) as f (x); @@ -1872,11 +1872,11 @@ create function extractq2_2(t int8_tbl) returns table ( ret1 bigint ) +language sql +immutable as $function$ select extractq2(t) offset 0 -$function$ -language sql -immutable; +$function$; select x from int8_tbl, extractq2_2(int8_tbl) as f (x); @@ -1886,11 +1886,11 @@ create function extractq2_2_opt(t int8_tbl) returns table ( ret1 bigint ) +language sql +immutable as $function$ select extractq2(t) -$function$ -language sql -immutable; +$function$; select x from int8_tbl, extractq2_2_opt(int8_tbl) as f (x); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__rangetypes_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__rangetypes_100.snap index 54081decc..7a34ecc59 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__rangetypes_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__rangetypes_100.snap @@ -930,10 +930,10 @@ drop type textrange2; create function anyarray_anyrange_func(a anyarray, r anyrange) returns anyelement +language sql as $function$ select $1[1] + lower($2); -$function$ -language sql; +$function$; select anyarray_anyrange_func(array[1, 2], int4range(10, 20)); @@ -943,34 +943,34 @@ drop function anyarray_anyrange_func(anyarray, anyrange); create function bogus_func(anyelement) returns anyrange +language sql as $function$ select int4range(1,10) -$function$ -language sql; +$function$; create function bogus_func(int) returns anyrange +language sql as $function$ select int4range(1,10) -$function$ -language sql; +$function$; create function range_add_bounds(anyrange) returns anyelement +language sql as $function$ select lower($1) + upper($1) -$function$ -language sql; +$function$; select range_add_bounds(int4range(1, 17)); select range_add_bounds(numrange(1.0001, 123.123)); create function rangetypes_sql(q anyrange, b anyarray, out c anyelement) +language sql as $function$ select upper($1) + $2[1] -$function$ -language sql; +$function$; select rangetypes_sql(int4range(1, 10), array[2, 20]); @@ -982,10 +982,10 @@ anycompatiblearray_anycompatiblerange_func( r anycompatiblerange ) returns anycompatible +language sql as $function$ select $1[1] + lower($2); -$function$ -language sql; +$function$; select anycompatiblearray_anycompatiblerange_func(array[1, 2], int4range(10, 20)); @@ -997,10 +997,10 @@ drop function anycompatiblearray_anycompatiblerange_func(anycompatiblearray, any create function bogus_func(anycompatible) returns anycompatiblerange +language sql as $function$ select int4range(1,10) -$function$ -language sql; +$function$; select array[numrange(1.1, 1.2), numrange(12.3, 155.5)]; @@ -1054,34 +1054,34 @@ select cast('(01,10)' as varbitrange) except select cast('(10,11)' as varbitrang reset enable_sort; create function outparam_succeed(i anyrange, out r anyrange, out t text) +language sql as $function$ select $1, 'foo'::text -$function$ -language sql; +$function$; select * from outparam_succeed(int4range(1, 2)); create function outparam2_succeed(r anyrange, out lu anyarray, out ul anyarray) +language sql as $function$ select array[lower($1), upper($1)], array[upper($1), lower($1)] -$function$ -language sql; +$function$; select * from outparam2_succeed(int4range(1, 11)); create function outparam_succeed2(i anyrange, out r anyarray, out t text) +language sql as $function$ select ARRAY[upper($1)], 'foo'::text -$function$ -language sql; +$function$; select * from outparam_succeed2(int4range(int4range(1, 2))); create function inoutparam_succeed(out i anyelement, inout r anyrange) +language sql as $function$ select upper($1), $1 -$function$ -language sql; +$function$; select * from inoutparam_succeed(int4range(1, 2)); @@ -1090,34 +1090,34 @@ returns table ( l anyelement, u anyelement ) +language sql as $function$ select lower($1), upper($1) -$function$ -language sql; +$function$; select * from table_succeed(int4range(1, 11)); create function outparam_fail(i anyelement, out r anyrange, out t text) +language sql as $function$ select '[1,10]', 'foo' -$function$ -language sql; +$function$; create function inoutparam_fail(inout i anyelement, out r anyrange) +language sql as $function$ select $1, '[1,10]' -$function$ -language sql; +$function$; create function table_fail(i anyelement) returns table ( i anyelement, r anyrange ) +language sql as $function$ select $1, '[1,10]' -$function$ -language sql; +$function$; select current_date <@ cast('empty' as daterange); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__rangetypes_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__rangetypes_80.snap index 3249bee94..a18d1f522 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__rangetypes_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__rangetypes_80.snap @@ -1023,10 +1023,10 @@ drop type textrange2; create function anyarray_anyrange_func(a anyarray, r anyrange) returns anyelement +language sql as $function$ select $1[1] + lower($2); -$function$ -language sql; +$function$; select anyarray_anyrange_func(array[1, 2], int4range(10, 20)); @@ -1036,34 +1036,34 @@ drop function anyarray_anyrange_func(anyarray, anyrange); create function bogus_func(anyelement) returns anyrange +language sql as $function$ select int4range(1,10) -$function$ -language sql; +$function$; create function bogus_func(int) returns anyrange +language sql as $function$ select int4range(1,10) -$function$ -language sql; +$function$; create function range_add_bounds(anyrange) returns anyelement +language sql as $function$ select lower($1) + upper($1) -$function$ -language sql; +$function$; select range_add_bounds(int4range(1, 17)); select range_add_bounds(numrange(1.0001, 123.123)); create function rangetypes_sql(q anyrange, b anyarray, out c anyelement) +language sql as $function$ select upper($1) + $2[1] -$function$ -language sql; +$function$; select rangetypes_sql(int4range(1, 10), array[2, 20]); @@ -1075,10 +1075,10 @@ anycompatiblearray_anycompatiblerange_func( r anycompatiblerange ) returns anycompatible +language sql as $function$ select $1[1] + lower($2); -$function$ -language sql; +$function$; select anycompatiblearray_anycompatiblerange_func( @@ -1105,10 +1105,10 @@ drop function create function bogus_func(anycompatible) returns anycompatiblerange +language sql as $function$ select int4range(1,10) -$function$ -language sql; +$function$; select array[numrange(1.1, 1.2), numrange(12.3, 155.5)]; @@ -1164,34 +1164,34 @@ select cast('(10,11)' as varbitrange); reset enable_sort; create function outparam_succeed(i anyrange, out r anyrange, out t text) +language sql as $function$ select $1, 'foo'::text -$function$ -language sql; +$function$; select * from outparam_succeed(int4range(1, 2)); create function outparam2_succeed(r anyrange, out lu anyarray, out ul anyarray) +language sql as $function$ select array[lower($1), upper($1)], array[upper($1), lower($1)] -$function$ -language sql; +$function$; select * from outparam2_succeed(int4range(1, 11)); create function outparam_succeed2(i anyrange, out r anyarray, out t text) +language sql as $function$ select ARRAY[upper($1)], 'foo'::text -$function$ -language sql; +$function$; select * from outparam_succeed2(int4range(int4range(1, 2))); create function inoutparam_succeed(out i anyelement, inout r anyrange) +language sql as $function$ select upper($1), $1 -$function$ -language sql; +$function$; select * from inoutparam_succeed(int4range(1, 2)); @@ -1200,34 +1200,34 @@ returns table ( l anyelement, u anyelement ) +language sql as $function$ select lower($1), upper($1) -$function$ -language sql; +$function$; select * from table_succeed(int4range(1, 11)); create function outparam_fail(i anyelement, out r anyrange, out t text) +language sql as $function$ select '[1,10]', 'foo' -$function$ -language sql; +$function$; create function inoutparam_fail(inout i anyelement, out r anyrange) +language sql as $function$ select $1, '[1,10]' -$function$ -language sql; +$function$; create function table_fail(i anyelement) returns table ( i anyelement, r anyrange ) +language sql as $function$ select $1, '[1,10]' -$function$ -language sql; +$function$; select current_date <@ cast('empty' as daterange); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__returning_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__returning_100.snap index 7fae17336..196684756 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__returning_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__returning_100.snap @@ -171,11 +171,11 @@ select * from foo; create function foo_f() returns setof foo +language sql +stable as $function$ SELECT * FROM foo OFFSET 0 -$function$ -language sql -stable; +$function$; update foo set f2 = foo_f.f2 from foo_f() where foo_f.f1 = foo.f1 returning foo_f; @@ -187,11 +187,11 @@ create type foo_t as (f1 int, f2 text, f3 int, f4 bigint); create function foo_f() returns setof foo_t +language sql +stable as $function$ SELECT * FROM foo OFFSET 0 -$function$ -language sql -stable; +$function$; update foo set f2 = foo_f.f2 from foo_f() where foo_f.f1 = foo.f1 returning foo_f; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__returning_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__returning_80.snap index d37b2de10..d1e694e41 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__returning_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__returning_80.snap @@ -184,11 +184,11 @@ select * from foo; create function foo_f() returns setof foo +language sql +stable as $function$ SELECT * FROM foo OFFSET 0 -$function$ -language sql -stable; +$function$; update foo set f2 = foo_f.f2 @@ -205,11 +205,11 @@ create type foo_t as (f1 int, f2 text, f3 int, f4 bigint); create function foo_f() returns setof foo_t +language sql +stable as $function$ SELECT * FROM foo OFFSET 0 -$function$ -language sql -stable; +$function$; update foo set f2 = foo_f.f2 diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__rowsecurity_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__rowsecurity_100.snap index 6491ac07e..240c21fcf 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__rowsecurity_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__rowsecurity_100.snap @@ -48,8 +48,8 @@ set search_path to regress_rls_schema; create or replace function f_leak(text) returns boolean -cost 0.0000001 language plpgsql +cost 0.0000001 as $function$ BEGIN RAISE NOTICE 'f_leak => %', $1; RETURN true; END $function$; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__rowsecurity_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__rowsecurity_80.snap index e97c211e5..9b73fd023 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__rowsecurity_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__rowsecurity_80.snap @@ -48,8 +48,8 @@ set search_path to regress_rls_schema; create or replace function f_leak(text) returns boolean -cost 0.0000001 language plpgsql +cost 0.0000001 as $function$ BEGIN RAISE NOTICE 'f_leak => %', $1; RETURN true; END $function$; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__rowtypes_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__rowtypes_100.snap index d6e7676c3..062e4aef0 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__rowtypes_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__rowtypes_100.snap @@ -456,17 +456,17 @@ create type price_key as (id int); create function price_key_from_table(price) returns price_key +language sql as $function$ SELECT $1.id -$function$ -language sql; +$function$; create function price_key_from_input(price_input) returns price_key +language sql as $function$ SELECT $1.id -$function$ -language sql; +$function$; insert into price values (1, false, 42), (10, false, 100), (11, true, 17.99); @@ -493,31 +493,31 @@ create temporary table compos ( create function fcompos1(v compos) returns void +language sql as $function$ insert into compos values (v); -- fail -$function$ -language sql; +$function$; create function fcompos1(v compos) returns void +language sql as $function$ insert into compos values (v.*); -$function$ -language sql; +$function$; create function fcompos2(v compos) returns void +language sql as $function$ select fcompos1(v); -$function$ -language sql; +$function$; create function fcompos3(v compos) returns void +language sql as $function$ select fcompos1(fcompos3.v.*); -$function$ -language sql; +$function$; select fcompos1(row(1, 'one')); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__rowtypes_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__rowtypes_80.snap index 3b99e0dbd..93d57f677 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__rowtypes_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__rowtypes_80.snap @@ -481,17 +481,17 @@ create type price_key as (id int); create function price_key_from_table(price) returns price_key +language sql as $function$ SELECT $1.id -$function$ -language sql; +$function$; create function price_key_from_input(price_input) returns price_key +language sql as $function$ SELECT $1.id -$function$ -language sql; +$function$; insert into price values (1, false, 42), (10, false, 100), (11, true, 17.99); @@ -518,31 +518,31 @@ create temporary table compos ( create function fcompos1(v compos) returns void +language sql as $function$ insert into compos values (v); -- fail -$function$ -language sql; +$function$; create function fcompos1(v compos) returns void +language sql as $function$ insert into compos values (v.*); -$function$ -language sql; +$function$; create function fcompos2(v compos) returns void +language sql as $function$ select fcompos1(v); -$function$ -language sql; +$function$; create function fcompos3(v compos) returns void +language sql as $function$ select fcompos1(fcompos3.v.*); -$function$ -language sql; +$function$; select fcompos1(row(1, 'one')); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__security_label_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__security_label_100.snap index 02280623e..c548852ba 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__security_label_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__security_label_100.snap @@ -29,10 +29,10 @@ as select * from seclabel_tbl2; create function seclabel_four() returns int +language sql as $function$ SELECT 4 -$function$ -language sql; +$function$; create domain seclabel_domain as text; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__security_label_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__security_label_80.snap index 02280623e..c548852ba 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__security_label_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__security_label_80.snap @@ -29,10 +29,10 @@ as select * from seclabel_tbl2; create function seclabel_four() returns int +language sql as $function$ SELECT 4 -$function$ -language sql; +$function$; create domain seclabel_domain as text; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__select_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__select_100.snap index 4b8cd7c2a..8672e9860 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__select_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__select_100.snap @@ -236,11 +236,11 @@ select 1 as x order by x; create function sillysrf(int) returns setof int +language sql +immutable as $function$ values (1),(10),(2),($1) -$function$ -language sql -immutable; +$function$; select sillysrf(42); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__select_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__select_80.snap index eb9f8856d..f4c4cc712 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__select_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__select_80.snap @@ -294,11 +294,11 @@ select 1 as x order by x; create function sillysrf(int) returns setof int +language sql +immutable as $function$ values (1),(10),(2),($1) -$function$ -language sql -immutable; +$function$; select sillysrf(42); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__select_distinct_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__select_distinct_100.snap index 25a4f128e..7c90a7927 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__select_distinct_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__select_distinct_100.snap @@ -102,25 +102,25 @@ select distinct four from tenk1; create or replace function distinct_func(a int) returns int +language plpgsql +parallel UNSAFE as $function$ BEGIN RETURN a; END; -$function$ -language plpgsql -parallel UNSAFE; +$function$; select distinct distinct_func(1) from tenk1; create or replace function distinct_func(a int) returns int +language plpgsql +parallel SAFE as $function$ BEGIN RETURN a; END; -$function$ -language plpgsql -parallel SAFE; +$function$; select distinct distinct_func(1) from tenk1; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__select_distinct_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__select_distinct_80.snap index c77ef23c4..a4628f8cf 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__select_distinct_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__select_distinct_80.snap @@ -120,25 +120,25 @@ select distinct four from tenk1; create or replace function distinct_func(a int) returns int +language plpgsql +parallel UNSAFE as $function$ BEGIN RETURN a; END; -$function$ -language plpgsql -parallel UNSAFE; +$function$; select distinct distinct_func(1) from tenk1; create or replace function distinct_func(a int) returns int +language plpgsql +parallel SAFE as $function$ BEGIN RETURN a; END; -$function$ -language plpgsql -parallel SAFE; +$function$; select distinct distinct_func(1) from tenk1; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__select_into_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__select_into_100.snap index 9af8769d5..28d34f246 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__select_into_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__select_into_100.snap @@ -97,10 +97,10 @@ drop table ctas_nodata_4; create function make_table() returns void +language sql as $function$ CREATE TABLE created_table AS SELECT * FROM int8_tbl; -$function$ -language sql; +$function$; select make_table(); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__select_into_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__select_into_80.snap index fbb67f2d9..d663b9c03 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__select_into_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__select_into_80.snap @@ -109,10 +109,10 @@ drop table ctas_nodata_4; create function make_table() returns void +language sql as $function$ CREATE TABLE created_table AS SELECT * FROM int8_tbl; -$function$ -language sql; +$function$; select make_table(); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__select_parallel_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__select_parallel_100.snap index e4bd7beef..3ea48dc9a 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__select_parallel_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__select_parallel_100.snap @@ -16,11 +16,11 @@ where create function sp_parallel_restricted(int) returns int +language plpgsql +parallel RESTRICTED as $function$ begin return $1; end -$function$ -language plpgsql -parallel RESTRICTED; +$function$; begin; @@ -90,11 +90,11 @@ reset enable_parallel_append; create function sp_test_func() returns setof text +language sql +stable as $function$ select 'foo'::varchar union all select 'bar'::varchar -$function$ -language sql -stable; +$function$; select sp_test_func() order by 1; @@ -516,13 +516,13 @@ select COUNT(*) from tenk1 group by twenty; create function sp_simple_func(var1 int) returns int +language plpgsql +parallel SAFE as $function$ begin return var1 + 10; end; -$function$ -language plpgsql -parallel SAFE; +$function$; select ten, sp_simple_func(ten) from tenk1 where ten < 100 order by ten; @@ -606,12 +606,12 @@ reset max_parallel_workers; create function parallel_safe_volatile(a int) returns int +language plpgsql +volatile +parallel SAFE as $function$ begin return a; end; -$function$ -parallel SAFE -volatile -language plpgsql; +$function$; select * from tenk1 where four = 2 order by four, hundred, parallel_safe_volatile(thousand); @@ -792,6 +792,8 @@ order by pathkey; create function make_some_array(int, int) returns int[] +language plpgsql +parallel SAFE as $function$ declare x int[]; begin @@ -799,9 +801,7 @@ declare x int[]; x[2] := $2; return x; end -$function$ -language plpgsql -parallel SAFE; +$function$; create table fooarr ( f1 text, @@ -845,21 +845,21 @@ create role regress_parallel_worker; create function set_and_report_role() returns text -as $function$ -select current_setting('role') -$function$ language sql parallel SAFE -set role to regress_parallel_worker; +set role to regress_parallel_worker +as $function$ +select current_setting('role') +$function$; create function set_role_and_error(int) returns int -as $function$ -select 1 / $1 -$function$ language sql parallel SAFE -set role to regress_parallel_worker; +set role to regress_parallel_worker +as $function$ +select 1 / $1 +$function$; set debug_parallel_query = 0; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__select_parallel_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__select_parallel_80.snap index 3f4ebbb0a..3af5ec298 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__select_parallel_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__select_parallel_80.snap @@ -16,11 +16,11 @@ where create function sp_parallel_restricted(int) returns int +language plpgsql +parallel RESTRICTED as $function$ begin return $1; end -$function$ -language plpgsql -parallel RESTRICTED; +$function$; begin; @@ -90,11 +90,11 @@ reset enable_parallel_append; create function sp_test_func() returns setof text +language sql +stable as $function$ select 'foo'::varchar union all select 'bar'::varchar -$function$ -language sql -stable; +$function$; select sp_test_func() order by 1; @@ -585,13 +585,13 @@ select COUNT(*) from tenk1 group by twenty; create function sp_simple_func(var1 int) returns int +language plpgsql +parallel SAFE as $function$ begin return var1 + 10; end; -$function$ -language plpgsql -parallel SAFE; +$function$; select ten, sp_simple_func(ten) from tenk1 where ten < 100 order by ten; @@ -675,12 +675,12 @@ reset max_parallel_workers; create function parallel_safe_volatile(a int) returns int +language plpgsql +volatile +parallel SAFE as $function$ begin return a; end; -$function$ -parallel SAFE -volatile -language plpgsql; +$function$; select * @@ -892,6 +892,8 @@ order by pathkey; create function make_some_array(int, int) returns int[] +language plpgsql +parallel SAFE as $function$ declare x int[]; begin @@ -899,9 +901,7 @@ declare x int[]; x[2] := $2; return x; end -$function$ -language plpgsql -parallel SAFE; +$function$; create table fooarr ( f1 text, @@ -958,21 +958,21 @@ create role regress_parallel_worker; create function set_and_report_role() returns text -as $function$ -select current_setting('role') -$function$ language sql parallel SAFE -set role to regress_parallel_worker; +set role to regress_parallel_worker +as $function$ +select current_setting('role') +$function$; create function set_role_and_error(int) returns int -as $function$ -select 1 / $1 -$function$ language sql parallel SAFE -set role to regress_parallel_worker; +set role to regress_parallel_worker +as $function$ +select 1 / $1 +$function$; set debug_parallel_query = 0; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__sqljson_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__sqljson_100.snap index 7242a7255..8d329bf98 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__sqljson_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__sqljson_100.snap @@ -220,11 +220,11 @@ create type mood as enum ('happy', 'sad', 'neutral'); create function mood_to_json(mood) returns json +language sql +immutable as $function$ SELECT to_json($1::text); -$function$ -language sql -immutable; +$function$; create cast (mood as json) with function mood_to_json(mood) as implicit; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__sqljson_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__sqljson_80.snap index 3392d083a..fbbeb12f5 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__sqljson_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__sqljson_80.snap @@ -228,11 +228,11 @@ create type mood as enum ('happy', 'sad', 'neutral'); create function mood_to_json(mood) returns json +language sql +immutable as $function$ SELECT to_json($1::text); -$function$ -language sql -immutable; +$function$; create cast (mood as json) with function mood_to_json(mood) as implicit; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__sqljson_queryfuncs_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__sqljson_queryfuncs_100.snap index 558c7a644..dda1b7889 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__sqljson_queryfuncs_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__sqljson_queryfuncs_100.snap @@ -1,7 +1,6 @@ --- source: crates/pgls_pretty_print/tests/tests.rs input_file: crates/pgls_pretty_print/tests/data/multi/sqljson_queryfuncs.sql -snapshot_kind: text --- select json_exists(cast(null as jsonb), '$'); @@ -918,13 +917,13 @@ using btree create or replace function ret_setint() returns setof int +language plpgsql +immutable as $function$ BEGIN RETURN QUERY EXECUTE 'select 1 union all select 1'; END; -$function$ -language plpgsql -immutable; +$function$; select json_query(js, '$' returning int default ret_setint() on error) from test_jsonb_mutability; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__sqljson_queryfuncs_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__sqljson_queryfuncs_80.snap index 4ea7d56d0..e6620763f 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__sqljson_queryfuncs_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__sqljson_queryfuncs_80.snap @@ -1,7 +1,6 @@ --- source: crates/pgls_pretty_print/tests/tests.rs input_file: crates/pgls_pretty_print/tests/data/multi/sqljson_queryfuncs.sql -snapshot_kind: text --- select json_exists(cast(null as jsonb), '$'); @@ -1107,13 +1106,13 @@ using btree create or replace function ret_setint() returns setof int +language plpgsql +immutable as $function$ BEGIN RETURN QUERY EXECUTE 'select 1 union all select 1'; END; -$function$ -language plpgsql -immutable; +$function$; select json_query(js, '$' diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__stats_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__stats_100.snap index c736c727b..714332498 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__stats_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__stats_100.snap @@ -1277,6 +1277,7 @@ create index "val_brin" on brin_hot using brin (val); create function wait_for_hot_stats() returns void +language plpgsql as $function$ DECLARE start_time timestamptz := clock_timestamp(); @@ -1296,8 +1297,7 @@ BEGIN RAISE log 'wait_for_hot_stats delayed % seconds', EXTRACT(epoch FROM clock_timestamp() - start_time); END -$function$ -language plpgsql; +$function$; update brin_hot set val = -3 where id = 42; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__stats_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__stats_80.snap index 1f34c34ef..162bbedb6 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__stats_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__stats_80.snap @@ -1491,6 +1491,7 @@ create index "val_brin" on brin_hot using brin (val); create function wait_for_hot_stats() returns void +language plpgsql as $function$ DECLARE start_time timestamptz := clock_timestamp(); @@ -1510,8 +1511,7 @@ BEGIN RAISE log 'wait_for_hot_stats delayed % seconds', EXTRACT(epoch FROM clock_timestamp() - start_time); END -$function$ -language plpgsql; +$function$; update brin_hot set val = -3 where id = 42; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__stats_ext_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__stats_ext_100.snap index fe847cda0..42cf03590 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__stats_ext_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__stats_ext_100.snap @@ -86,12 +86,12 @@ returns table ( a int, b int ) -as $function$ -SELECT $1, $1+i FROM generate_series(1,5) g(i); -$function$ language sql immutable -strict; +strict +as $function$ +SELECT $1, $1+i FROM generate_series(1,5) g(i); +$function$; create statistics alt_stat2 on "a" from tftest(1); @@ -3029,19 +3029,19 @@ select * from tststats.priv_test_tbl where a = 1 and tststats.priv_test_tbl.* > create function op_leak(int, int) returns boolean +language plpgsql as $function$ BEGIN RAISE NOTICE 'op_leak => %, %', $1, $2; RETURN $1 < $2; END -$function$ -language plpgsql; +$function$; create operator <<< (PROCEDURE = op_leak, LEFTARG = int, RIGHTARG = int, RESTRICT = scalarltsel); create function op_leak(record, record) returns boolean +language plpgsql as $function$ BEGIN RAISE NOTICE 'op_leak => %, %', $1, $2; RETURN $1 < $2; END -$function$ -language plpgsql; +$function$; create operator <<< (PROCEDURE = op_leak, LEFTARG = record, @@ -3300,9 +3300,9 @@ reset enable_mergejoin; create function extstat_small(x numeric) returns boolean -strict -immutable language plpgsql +immutable +strict as $function$ BEGIN RETURN x < 1; END $function$; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__stats_ext_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__stats_ext_80.snap index 169572855..d2114aeb0 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__stats_ext_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__stats_ext_80.snap @@ -104,12 +104,12 @@ returns table ( a int, b int ) -as $function$ -SELECT $1, $1+i FROM generate_series(1,5) g(i); -$function$ language sql immutable -strict; +strict +as $function$ +SELECT $1, $1+i FROM generate_series(1,5) g(i); +$function$; create statistics alt_stat2 on "a" from tftest(1); @@ -3975,10 +3975,10 @@ where create function op_leak(int, int) returns boolean +language plpgsql as $function$ BEGIN RAISE NOTICE 'op_leak => %, %', $1, $2; RETURN $1 < $2; END -$function$ -language plpgsql; +$function$; create operator <<< (PROCEDURE = op_leak, LEFTARG = int, @@ -3987,10 +3987,10 @@ RESTRICT = scalarltsel); create function op_leak(record, record) returns boolean +language plpgsql as $function$ BEGIN RAISE NOTICE 'op_leak => %, %', $1, $2; RETURN $1 < $2; END -$function$ -language plpgsql; +$function$; create operator <<< (PROCEDURE = op_leak, LEFTARG = record, @@ -4276,9 +4276,9 @@ reset enable_mergejoin; create function extstat_small(x numeric) returns boolean -strict -immutable language plpgsql +immutable +strict as $function$ BEGIN RETURN x < 1; END $function$; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__subscription_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__subscription_100.snap index 0621a2bda..6d14d18eb 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__subscription_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__subscription_100.snap @@ -253,10 +253,10 @@ commit; create function func() returns void +language sql as $function$ ALTER SUBSCRIPTION regress_testsub SET PUBLICATION mypub WITH (refresh = true) -$function$ -language sql; +$function$; select func(); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__subscription_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__subscription_80.snap index fa50be81c..17f5a7bfd 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__subscription_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__subscription_80.snap @@ -266,10 +266,10 @@ commit; create function func() returns void +language sql as $function$ ALTER SUBSCRIPTION regress_testsub SET PUBLICATION mypub WITH (refresh = true) -$function$ -language sql; +$function$; select func(); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__subselect_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__subselect_100.snap index 7cdf0b1b2..eade5adf9 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__subselect_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__subselect_100.snap @@ -1410,8 +1410,8 @@ select nextval('ts1'); create function tattle(x int, y int) returns boolean -volatile language plpgsql +volatile as $function$ begin raise notice 'x = %, y = %', x, y; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__subselect_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__subselect_80.snap index 58cc38ca8..4e079622e 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__subselect_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__subselect_80.snap @@ -1768,8 +1768,8 @@ select nextval('ts1'); create function tattle(x int, y int) returns boolean -volatile language plpgsql +volatile as $function$ begin raise notice 'x = %, y = %', x, y; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__temp_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__temp_100.snap index 0c1ca3dcb..1e6f21d5b 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__temp_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__temp_100.snap @@ -141,17 +141,17 @@ insert into whereami values ('temp'); create function public.whoami() returns text +language sql as $function$ select 'public'::text -$function$ -language sql; +$function$; create function pg_temp.whoami() returns text +language sql as $function$ select 'temp'::text -$function$ -language sql; +$function$; select * from whereami; @@ -266,19 +266,19 @@ begin; create function pg_temp.twophase_func() returns void +language sql as $function$ select '2pc_func'::text -$function$ -language sql; +$function$; prepare transaction 'twophase_func'; create function pg_temp.twophase_func() returns void +language sql as $function$ select '2pc_func'::text -$function$ -language sql; +$function$; begin; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__temp_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__temp_80.snap index d82127a93..d0c9458aa 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__temp_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__temp_80.snap @@ -141,17 +141,17 @@ insert into whereami values ('temp'); create function public.whoami() returns text +language sql as $function$ select 'public'::text -$function$ -language sql; +$function$; create function pg_temp.whoami() returns text +language sql as $function$ select 'temp'::text -$function$ -language sql; +$function$; select * from whereami; @@ -272,19 +272,19 @@ begin; create function pg_temp.twophase_func() returns void +language sql as $function$ select '2pc_func'::text -$function$ -language sql; +$function$; prepare transaction 'twophase_func'; create function pg_temp.twophase_func() returns void +language sql as $function$ select '2pc_func'::text -$function$ -language sql; +$function$; begin; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__test_setup_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__test_setup_100.snap index 57c0f9e05..b90cf5ccc 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__test_setup_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__test_setup_100.snap @@ -208,21 +208,21 @@ create type textrange as range (subtype = text, collation = "C"); create function binary_coercible(oid, oid) returns boolean -as 'regresslib', 'binary_coercible' language c -strict stable -parallel SAFE; +strict +parallel SAFE +as 'regresslib', 'binary_coercible'; create function part_hashint4_noop(value int, seed bigint) returns bigint -as $function$ -select value + seed; -$function$ language sql -strict immutable -parallel SAFE; +strict +parallel SAFE +as $function$ +select value + seed; +$function$; create operator class part_test_int4_ops for type int @@ -232,13 +232,13 @@ create operator class part_test_int4_ops create function part_hashtext_length(value text, seed bigint) returns bigint -as $function$ -select length(coalesce(value, ''))::int8 -$function$ language sql -strict immutable -parallel SAFE; +strict +parallel SAFE +as $function$ +select length(coalesce(value, ''))::int8 +$function$; create operator class part_test_text_ops for type text @@ -248,17 +248,17 @@ create operator class part_test_text_ops create function fipshash(bytea) returns text -strict immutable -parallel SAFE -leakproof return substr(encode(sha256($1), 'hex'), 1, 32);; +leakproof +strict +parallel SAFE return substr(encode(sha256($1), 'hex'), 1, 32);; create function fipshash(text) returns text -strict immutable -parallel SAFE -leakproof return substr( +leakproof +strict +parallel SAFE return substr( encode(sha256(cast($1 as bytea)), 'hex'), 1, 32 diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__test_setup_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__test_setup_80.snap index 7c6a2da78..6fe66be41 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__test_setup_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__test_setup_80.snap @@ -226,21 +226,21 @@ create type textrange as range (subtype = text, collation = "C"); create function binary_coercible(oid, oid) returns boolean -as 'regresslib', 'binary_coercible' language c -strict stable -parallel SAFE; +strict +parallel SAFE +as 'regresslib', 'binary_coercible'; create function part_hashint4_noop(value int, seed bigint) returns bigint -as $function$ -select value + seed; -$function$ language sql -strict immutable -parallel SAFE; +strict +parallel SAFE +as $function$ +select value + seed; +$function$; create operator class part_test_int4_ops for type int @@ -250,13 +250,13 @@ create operator class part_test_int4_ops create function part_hashtext_length(value text, seed bigint) returns bigint -as $function$ -select length(coalesce(value, ''))::int8 -$function$ language sql -strict immutable -parallel SAFE; +strict +parallel SAFE +as $function$ +select length(coalesce(value, ''))::int8 +$function$; create operator class part_test_text_ops for type text @@ -266,17 +266,17 @@ create operator class part_test_text_ops create function fipshash(bytea) returns text -strict immutable -parallel SAFE -leakproof return substr(encode(sha256($1), 'hex'), 1, 32);; +leakproof +strict +parallel SAFE return substr(encode(sha256($1), 'hex'), 1, 32);; create function fipshash(text) returns text -strict immutable -parallel SAFE -leakproof return substr( +leakproof +strict +parallel SAFE return substr( encode(sha256(cast($1 as bytea)), 'hex'), 1, 32 diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__transactions_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__transactions_100.snap index ba8bed7cc..7ff4f5111 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__transactions_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__transactions_100.snap @@ -58,10 +58,10 @@ commit; create function errfunc() returns int language sql +set transaction_read_only = 'on' as $function$ SELECT 1 -$function$ -set transaction_read_only = 'on'; +$function$; create table writetest (a int); @@ -470,10 +470,10 @@ select * from xacttest; create or replace function max_xacttest() returns smallint language sql +stable as $function$ select max(a) from xacttest -$function$ -stable; +$function$; begin; @@ -486,10 +486,10 @@ rollback; create or replace function max_xacttest() returns smallint language sql +volatile as $function$ select max(a) from xacttest -$function$ -volatile; +$function$; begin; @@ -502,10 +502,10 @@ rollback; create or replace function max_xacttest() returns smallint language plpgsql +stable as $function$ begin return max(a) from xacttest; end -$function$ -stable; +$function$; begin; @@ -518,10 +518,10 @@ rollback; create or replace function max_xacttest() returns smallint language plpgsql +volatile as $function$ begin return max(a) from xacttest; end -$function$ -volatile; +$function$; begin; @@ -559,6 +559,8 @@ drop table trans_barbaz; create function inverse(int) returns double precision +language plpgsql +volatile as $function$ begin analyze revalidate_bug; @@ -566,9 +568,7 @@ begin exception when division_by_zero then return 0; end -$function$ -language plpgsql -volatile; +$function$; create table revalidate_bug (c double precision unique); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__transactions_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__transactions_80.snap index bc0c7b793..357bb6275 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__transactions_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__transactions_80.snap @@ -63,10 +63,10 @@ commit; create function errfunc() returns int language sql +set transaction_read_only = 'on' as $function$ SELECT 1 -$function$ -set transaction_read_only = 'on'; +$function$; create table writetest (a int); @@ -498,10 +498,10 @@ select * from xacttest; create or replace function max_xacttest() returns smallint language sql +stable as $function$ select max(a) from xacttest -$function$ -stable; +$function$; begin; @@ -514,10 +514,10 @@ rollback; create or replace function max_xacttest() returns smallint language sql +volatile as $function$ select max(a) from xacttest -$function$ -volatile; +$function$; begin; @@ -530,10 +530,10 @@ rollback; create or replace function max_xacttest() returns smallint language plpgsql +stable as $function$ begin return max(a) from xacttest; end -$function$ -stable; +$function$; begin; @@ -546,10 +546,10 @@ rollback; create or replace function max_xacttest() returns smallint language plpgsql +volatile as $function$ begin return max(a) from xacttest; end -$function$ -volatile; +$function$; begin; @@ -587,6 +587,8 @@ drop table trans_barbaz; create function inverse(int) returns double precision +language plpgsql +volatile as $function$ begin analyze revalidate_bug; @@ -594,9 +596,7 @@ begin exception when division_by_zero then return 0; end -$function$ -language plpgsql -volatile; +$function$; create table revalidate_bug (c double precision unique); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__triggers_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__triggers_100.snap index 909fcf724..9826adce9 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__triggers_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__triggers_100.snap @@ -4,10 +4,10 @@ input_file: crates/pgls_pretty_print/tests/data/multi/triggers.sql --- create function trigger_return_old() returns trigger +language c as $function$ regresslib -$function$ -language c; +$function$; create table trigtest ( f1 int, @@ -34,10 +34,10 @@ select * from trigtest; create function f1_times_10() returns trigger +language plpgsql as $function$ begin new.f1 := new.f1 * 10; return new; end -$function$ -language plpgsql; +$function$; create trigger trigger_alpha before insert or update @@ -373,14 +373,14 @@ create table some_t (some_col boolean not null); create function dummy_update_func() returns trigger +language plpgsql as $function$ BEGIN RAISE NOTICE 'dummy_update_func(%) called: action = %, old = %, new = %', TG_ARGV[0], TG_OP, OLD, NEW; RETURN NEW; END; -$function$ -language plpgsql; +$function$; create trigger some_trig_before before update @@ -469,13 +469,13 @@ create table trigtest2 (i int references trigtest (i) on DELETE cascade); create function trigtest() returns trigger +language plpgsql as $function$ begin raise notice '% % % %', TG_TABLE_NAME, TG_OP, TG_WHEN, TG_LEVEL; return new; end; -$function$ -language plpgsql; +$function$; create trigger trigtest_b_row_tg before insert or delete or update @@ -1490,13 +1490,13 @@ inherits (stmt_trig_on_empty_upd); create function update_stmt_notice() returns trigger +language plpgsql as $function$ begin raise notice 'updating %', TG_TABLE_NAME; return null; end; -$function$ -language plpgsql; +$function$; create trigger before_stmt_trigger before update @@ -1525,13 +1525,13 @@ create table trigger_ddl_table ( create function trigger_ddl_func() returns trigger +language plpgsql as $function$ begin alter table trigger_ddl_table add primary key (col1); return new; end -$function$ -language plpgsql; +$function$; create trigger trigger_ddl_func before insert @@ -1543,13 +1543,13 @@ insert into trigger_ddl_table values (1, 42); create or replace function trigger_ddl_func() returns trigger +language plpgsql as $function$ begin create index on trigger_ddl_table (col2); return new; end -$function$ -language plpgsql; +$function$; insert into trigger_ddl_table values (1, 42); @@ -1688,10 +1688,10 @@ as select * from my_table; create function my_trigger_function() returns trigger +language plpgsql as $function$ begin end; -$function$ -language plpgsql; +$function$; create trigger my_trigger after update @@ -1883,6 +1883,7 @@ create table parted2_stmt_trig2 partition of parted2_stmt_trig for values in (2) create or replace function trigger_notice() returns trigger +language plpgsql as $function$ begin raise notice 'trigger % on % % % for %', TG_NAME, TG_TABLE_NAME, TG_WHEN, TG_OP, TG_LEVEL; @@ -1891,8 +1892,7 @@ begin end if; return null; end; -$function$ -language plpgsql; +$function$; create trigger trig_ins_before before insert @@ -2089,6 +2089,7 @@ insert into parted_trig values (1); create or replace function trigger_notice() returns trigger +language plpgsql as $function$ begin raise notice 'trigger % on % % % for %', TG_NAME, TG_TABLE_NAME, TG_WHEN, TG_OP, TG_LEVEL; @@ -2101,8 +2102,7 @@ begin end if; return null; end; -$function$ -language plpgsql; +$function$; create trigger parted_trig_before_stmt before insert or delete or update @@ -2139,6 +2139,7 @@ create table parted_trig1 partition of parted_trig for values in (1); create or replace function trigger_notice() returns trigger +language plpgsql as $function$ declare arg1 text = TG_ARGV[0]; @@ -2148,8 +2149,7 @@ declare TG_NAME, TG_TABLE_NAME, TG_WHEN, TG_OP, TG_LEVEL, arg1, arg2; return null; end; -$function$ -language plpgsql; +$function$; create trigger aaa after insert @@ -2180,6 +2180,7 @@ $function$; create or replace function trigger_notice_ab() returns trigger +language plpgsql as $function$ begin raise notice 'trigger % on % % % for %: (a,b)=(%,%)', @@ -2190,8 +2191,7 @@ begin end if; return null; end; -$function$ -language plpgsql; +$function$; create table parted_irreg_ancestor ( fd text, @@ -3654,13 +3654,13 @@ create table my_table (a int); create function make_bogus_matview() returns trigger +language plpgsql as $function$ begin create materialized view transition_test_mv as select * from new_table; return new; end -$function$ -language plpgsql; +$function$; create trigger make_bogus_matview after insert @@ -3841,23 +3841,23 @@ create table my_table (id int); create function funca() returns trigger +language plpgsql as $function$ begin raise notice 'hello from funcA'; return null; end; -$function$ -language plpgsql; +$function$; create function funcb() returns trigger +language plpgsql as $function$ begin raise notice 'hello from funcB'; return null; end; -$function$ -language plpgsql; +$function$; create trigger my_trig after insert on my_table for each row execute function funca(); @@ -4071,10 +4071,10 @@ alter table convslot_test_parent create function convslot_trig4() returns trigger +language plpgsql as $function$ begin raise exception 'BOOM!'; end -$function$ -language plpgsql; +$function$; create trigger convslot_test_parent_update after update @@ -4114,10 +4114,10 @@ create table cho partition of middle for values from (6) to (10); create function f() returns trigger +language plpgsql as $function$ begin return new; end; -$function$ -language plpgsql; +$function$; create trigger a after insert on grandparent for each row execute function f(); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__triggers_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__triggers_80.snap index 4ee2f2f2e..1780a91e5 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__triggers_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__triggers_80.snap @@ -4,10 +4,10 @@ input_file: crates/pgls_pretty_print/tests/data/multi/triggers.sql --- create function trigger_return_old() returns trigger +language c as $function$ regresslib -$function$ -language c; +$function$; create table trigtest ( f1 int, @@ -34,10 +34,10 @@ select * from trigtest; create function f1_times_10() returns trigger +language plpgsql as $function$ begin new.f1 := new.f1 * 10; return new; end -$function$ -language plpgsql; +$function$; create trigger trigger_alpha before insert or update @@ -383,14 +383,14 @@ create table some_t (some_col boolean not null); create function dummy_update_func() returns trigger +language plpgsql as $function$ BEGIN RAISE NOTICE 'dummy_update_func(%) called: action = %, old = %, new = %', TG_ARGV[0], TG_OP, OLD, NEW; RETURN NEW; END; -$function$ -language plpgsql; +$function$; create trigger some_trig_before before update @@ -479,13 +479,13 @@ create table trigtest2 (i int references trigtest (i) on DELETE cascade); create function trigtest() returns trigger +language plpgsql as $function$ begin raise notice '% % % %', TG_TABLE_NAME, TG_OP, TG_WHEN, TG_LEVEL; return new; end; -$function$ -language plpgsql; +$function$; create trigger trigtest_b_row_tg before insert or delete or update @@ -1566,13 +1566,13 @@ inherits (stmt_trig_on_empty_upd); create function update_stmt_notice() returns trigger +language plpgsql as $function$ begin raise notice 'updating %', TG_TABLE_NAME; return null; end; -$function$ -language plpgsql; +$function$; create trigger before_stmt_trigger before update @@ -1601,13 +1601,13 @@ create table trigger_ddl_table ( create function trigger_ddl_func() returns trigger +language plpgsql as $function$ begin alter table trigger_ddl_table add primary key (col1); return new; end -$function$ -language plpgsql; +$function$; create trigger trigger_ddl_func before insert @@ -1619,13 +1619,13 @@ insert into trigger_ddl_table values (1, 42); create or replace function trigger_ddl_func() returns trigger +language plpgsql as $function$ begin create index on trigger_ddl_table (col2); return new; end -$function$ -language plpgsql; +$function$; insert into trigger_ddl_table values (1, 42); @@ -1764,10 +1764,10 @@ as select * from my_table; create function my_trigger_function() returns trigger +language plpgsql as $function$ begin end; -$function$ -language plpgsql; +$function$; create trigger my_trigger after update @@ -1983,6 +1983,7 @@ for values in (2); create or replace function trigger_notice() returns trigger +language plpgsql as $function$ begin raise notice 'trigger % on % % % for %', TG_NAME, TG_TABLE_NAME, TG_WHEN, TG_OP, TG_LEVEL; @@ -1991,8 +1992,7 @@ begin end if; return null; end; -$function$ -language plpgsql; +$function$; create trigger trig_ins_before before insert @@ -2219,6 +2219,7 @@ insert into parted_trig values (1); create or replace function trigger_notice() returns trigger +language plpgsql as $function$ begin raise notice 'trigger % on % % % for %', TG_NAME, TG_TABLE_NAME, TG_WHEN, TG_OP, TG_LEVEL; @@ -2231,8 +2232,7 @@ begin end if; return null; end; -$function$ -language plpgsql; +$function$; create trigger parted_trig_before_stmt before insert or delete or update @@ -2269,6 +2269,7 @@ create table parted_trig1 partition of parted_trig for values in (1); create or replace function trigger_notice() returns trigger +language plpgsql as $function$ declare arg1 text = TG_ARGV[0]; @@ -2278,8 +2279,7 @@ declare TG_NAME, TG_TABLE_NAME, TG_WHEN, TG_OP, TG_LEVEL, arg1, arg2; return null; end; -$function$ -language plpgsql; +$function$; create trigger aaa after insert @@ -2310,6 +2310,7 @@ $function$; create or replace function trigger_notice_ab() returns trigger +language plpgsql as $function$ begin raise notice 'trigger % on % % % for %: (a,b)=(%,%)', @@ -2320,8 +2321,7 @@ begin end if; return null; end; -$function$ -language plpgsql; +$function$; create table parted_irreg_ancestor ( fd text, @@ -3856,13 +3856,13 @@ create table my_table (a int); create function make_bogus_matview() returns trigger +language plpgsql as $function$ begin create materialized view transition_test_mv as select * from new_table; return new; end -$function$ -language plpgsql; +$function$; create trigger make_bogus_matview after insert @@ -4045,23 +4045,23 @@ create table my_table (id int); create function funca() returns trigger +language plpgsql as $function$ begin raise notice 'hello from funcA'; return null; end; -$function$ -language plpgsql; +$function$; create function funcb() returns trigger +language plpgsql as $function$ begin raise notice 'hello from funcB'; return null; end; -$function$ -language plpgsql; +$function$; create trigger my_trig after insert @@ -4326,10 +4326,10 @@ alter table convslot_test_parent create function convslot_trig4() returns trigger +language plpgsql as $function$ begin raise exception 'BOOM!'; end -$function$ -language plpgsql; +$function$; create trigger convslot_test_parent_update after update @@ -4372,10 +4372,10 @@ create table cho partition of middle for values from (6) to (10); create function f() returns trigger +language plpgsql as $function$ begin return new; end; -$function$ -language plpgsql; +$function$; create trigger a after insert on grandparent for each row execute function f(); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__truncate_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__truncate_100.snap index 4498095d0..0c2639366 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__truncate_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__truncate_100.snap @@ -212,6 +212,7 @@ create table trunc_trigger_log ( create function trunctrigger() returns trigger +language plpgsql as $function$ declare c bigint; begin @@ -220,8 +221,7 @@ begin (TG_OP, TG_LEVEL, TG_WHEN, TG_ARGV[0], tg_table_name, c); return null; end; -$function$ -language plpgsql; +$function$; insert into trunc_trigger_test values (1, 'foo', 'bar'), (2, 'baz', 'quux'); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__truncate_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__truncate_80.snap index 031e2aac8..816a9a6ec 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__truncate_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__truncate_80.snap @@ -212,6 +212,7 @@ create table trunc_trigger_log ( create function trunctrigger() returns trigger +language plpgsql as $function$ declare c bigint; begin @@ -220,8 +221,7 @@ begin (TG_OP, TG_LEVEL, TG_WHEN, TG_ARGV[0], tg_table_name, c); return null; end; -$function$ -language plpgsql; +$function$; insert into trunc_trigger_test values (1, 'foo', 'bar'), (2, 'baz', 'quux'); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__type_sanity_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__type_sanity_100.snap index a296b5238..16df6c622 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__type_sanity_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__type_sanity_100.snap @@ -1,7 +1,6 @@ --- source: crates/pgls_pretty_print/tests/tests.rs input_file: crates/pgls_pretty_print/tests/data/multi/type_sanity.sql -snapshot_kind: text --- select t1.oid, @@ -717,9 +716,9 @@ where create function is_catalog_text_unique_index_oid(oid) returns boolean -as 'regresslib', 'is_catalog_text_unique_index_oid' language c -strict; +strict +as 'regresslib', 'is_catalog_text_unique_index_oid'; select cast(indexrelid as regclass) diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__type_sanity_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__type_sanity_80.snap index 43bda7788..dd65b0b85 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__type_sanity_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__type_sanity_80.snap @@ -1,7 +1,6 @@ --- source: crates/pgls_pretty_print/tests/tests.rs input_file: crates/pgls_pretty_print/tests/data/multi/type_sanity.sql -snapshot_kind: text --- select t1.oid, @@ -776,9 +775,9 @@ where create function is_catalog_text_unique_index_oid(oid) returns boolean -as 'regresslib', 'is_catalog_text_unique_index_oid' language c -strict; +strict +as 'regresslib', 'is_catalog_text_unique_index_oid'; select cast(indexrelid as regclass) diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__updatable_views_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__updatable_views_100.snap index 73545c846..0b3c48dbd 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__updatable_views_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__updatable_views_100.snap @@ -667,6 +667,7 @@ order by table_name, create function rw_view1_trig_fn() returns trigger +language plpgsql as $function$ BEGIN IF TG_OP = 'INSERT' THEN @@ -682,8 +683,7 @@ BEGIN RETURN OLD; END IF; END; -$function$ -language plpgsql; +$function$; create trigger rw_view1_ins_trig instead of insert @@ -848,10 +848,10 @@ as select b as bb, a as aa from base_tbl; create function rw_view1_aa(x rw_view1) returns int +language sql as $function$ SELECT x.aa -$function$ -language sql; +$function$; update rw_view1 as v set bb = 'Updated row 2' @@ -1436,6 +1436,7 @@ insert into base_tbl values (2, 'Row 2'); create function rw_view1_trig_fn() returns trigger +language plpgsql as $function$ BEGIN IF TG_OP = 'INSERT' THEN @@ -1444,8 +1445,7 @@ BEGIN END IF; RETURN NULL; END; -$function$ -language plpgsql; +$function$; create trigger rw_view1_ins_trig after insert @@ -1902,13 +1902,13 @@ create table base_tbl ( create function base_tbl_trig_fn() returns trigger +language plpgsql as $function$ BEGIN NEW.b := 10; RETURN NEW; END; -$function$ -language plpgsql; +$function$; create trigger base_tbl_trig before insert or update @@ -1940,6 +1940,7 @@ as select a from base_tbl where a < b; create function rw_view1_trig_fn() returns trigger +language plpgsql as $function$ BEGIN IF TG_OP = 'INSERT' THEN @@ -1953,8 +1954,7 @@ BEGIN RETURN OLD; END IF; END; -$function$ -language plpgsql; +$function$; create trigger rw_view1_trig instead of insert or delete or update @@ -2050,26 +2050,26 @@ where create function snoop(anyelement) returns boolean +language plpgsql +cost 0.000001 as $function$ BEGIN RAISE NOTICE 'snooped value: %', $1; RETURN true; END; -$function$ -language plpgsql -cost 0.000001; +$function$; create or replace function leakproof(anyelement) returns boolean +language plpgsql +immutable +leakproof +strict as $function$ BEGIN RETURN true; END; -$function$ -language plpgsql -strict -immutable -leakproof; +$function$; select * from rw_view1 where snoop(person); @@ -2928,13 +2928,13 @@ select * from base_tab_def order by a; create function base_tab_def_view_instrig_func() returns trigger +language plpgsql as $function$ begin insert into base_tab_def values (new.a, new.b, new.c, new.d, new.e); return new; end; -$function$ -language plpgsql; +$function$; create trigger base_tab_def_view_instrig instead of insert diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__updatable_views_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__updatable_views_80.snap index 66865d61f..51aaedcc0 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__updatable_views_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__updatable_views_80.snap @@ -723,6 +723,7 @@ order by table_name, create function rw_view1_trig_fn() returns trigger +language plpgsql as $function$ BEGIN IF TG_OP = 'INSERT' THEN @@ -738,8 +739,7 @@ BEGIN RETURN OLD; END IF; END; -$function$ -language plpgsql; +$function$; create trigger rw_view1_ins_trig instead of insert @@ -904,10 +904,10 @@ as select b as bb, a as aa from base_tbl; create function rw_view1_aa(x rw_view1) returns int +language sql as $function$ SELECT x.aa -$function$ -language sql; +$function$; update rw_view1 as v set bb = 'Updated row 2' @@ -1512,6 +1512,7 @@ insert into base_tbl values (2, 'Row 2'); create function rw_view1_trig_fn() returns trigger +language plpgsql as $function$ BEGIN IF TG_OP = 'INSERT' THEN @@ -1520,8 +1521,7 @@ BEGIN END IF; RETURN NULL; END; -$function$ -language plpgsql; +$function$; create trigger rw_view1_ins_trig after insert @@ -1996,13 +1996,13 @@ create table base_tbl ( create function base_tbl_trig_fn() returns trigger +language plpgsql as $function$ BEGIN NEW.b := 10; RETURN NEW; END; -$function$ -language plpgsql; +$function$; create trigger base_tbl_trig before insert or update @@ -2034,6 +2034,7 @@ as select a from base_tbl where a < b; create function rw_view1_trig_fn() returns trigger +language plpgsql as $function$ BEGIN IF TG_OP = 'INSERT' THEN @@ -2047,8 +2048,7 @@ BEGIN RETURN OLD; END IF; END; -$function$ -language plpgsql; +$function$; create trigger rw_view1_trig instead of insert or delete or update @@ -2151,26 +2151,26 @@ where create function snoop(anyelement) returns boolean +language plpgsql +cost 0.000001 as $function$ BEGIN RAISE NOTICE 'snooped value: %', $1; RETURN true; END; -$function$ -language plpgsql -cost 0.000001; +$function$; create or replace function leakproof(anyelement) returns boolean +language plpgsql +immutable +leakproof +strict as $function$ BEGIN RETURN true; END; -$function$ -language plpgsql -strict -immutable -leakproof; +$function$; select * from rw_view1 where snoop(person); @@ -3181,13 +3181,13 @@ select * from base_tab_def order by a; create function base_tab_def_view_instrig_func() returns trigger +language plpgsql as $function$ begin insert into base_tab_def values (new.a, new.b, new.c, new.d, new.e); return new; end; -$function$ -language plpgsql; +$function$; create trigger base_tab_def_view_instrig instead of insert diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__update_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__update_100.snap index 28d285113..4d3a3f64b 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__update_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__update_100.snap @@ -437,13 +437,13 @@ drop trigger trans_inserttrig on range_parted; create function func_parted_mod_b() returns trigger +language plpgsql as $function$ BEGIN NEW.b = NEW.b + 1; return NEW; END -$function$ -language plpgsql; +$function$; create trigger trig_c1_100 before insert or update @@ -507,13 +507,13 @@ reset session_authorization; create function func_d_1_15() returns trigger +language plpgsql as $function$ BEGIN NEW.c = NEW.c + 1; -- Make even numbers odd, or vice versa return NEW; END -$function$ -language plpgsql; +$function$; create trigger trig_d_1_15 before insert on part_d_1_15 for each row execute function func_d_1_15(); @@ -870,13 +870,13 @@ select cast(cast(tableoid as regclass) as text), * from list_parted where a = 2 create function func_parted_mod_b() returns trigger +language plpgsql as $function$ BEGIN NEW.b = 2; -- This is changing partition key column. return NEW; END -$function$ -language plpgsql; +$function$; create trigger parted_mod_b before update @@ -894,13 +894,13 @@ drop trigger parted_mod_b on sub_part1; create or replace function func_parted_mod_b() returns trigger +language plpgsql as $function$ BEGIN raise notice 'Trigger: Got OLD row %, but returning NULL', OLD; return NULL; END -$function$ -language plpgsql; +$function$; create trigger trig_skip_delete before delete @@ -934,11 +934,11 @@ drop table list_parted; create or replace function dummy_hashint4(a int, seed bigint) returns bigint +language plpgsql +immutable as $function$ begin return (a + seed); end; -$function$ -language plpgsql -immutable; +$function$; create operator class custom_opclass for type int diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__update_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__update_80.snap index 29211ebdf..997195d20 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__update_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__update_80.snap @@ -493,13 +493,13 @@ drop trigger trans_inserttrig on range_parted; create function func_parted_mod_b() returns trigger +language plpgsql as $function$ BEGIN NEW.b = NEW.b + 1; return NEW; END -$function$ -language plpgsql; +$function$; create trigger trig_c1_100 before insert or update @@ -568,13 +568,13 @@ reset session_authorization; create function func_d_1_15() returns trigger +language plpgsql as $function$ BEGIN NEW.c = NEW.c + 1; -- Make even numbers odd, or vice versa return NEW; END -$function$ -language plpgsql; +$function$; create trigger trig_d_1_15 before insert @@ -955,13 +955,13 @@ order by 1; create function func_parted_mod_b() returns trigger +language plpgsql as $function$ BEGIN NEW.b = 2; -- This is changing partition key column. return NEW; END -$function$ -language plpgsql; +$function$; create trigger parted_mod_b before update @@ -995,13 +995,13 @@ drop trigger parted_mod_b on sub_part1; create or replace function func_parted_mod_b() returns trigger +language plpgsql as $function$ BEGIN raise notice 'Trigger: Got OLD row %, but returning NULL', OLD; return NULL; END -$function$ -language plpgsql; +$function$; create trigger trig_skip_delete before delete @@ -1063,11 +1063,11 @@ drop table list_parted; create or replace function dummy_hashint4(a int, seed bigint) returns bigint +language plpgsql +immutable as $function$ begin return (a + seed); end; -$function$ -language plpgsql -immutable; +$function$; create operator class custom_opclass for type int diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__vacuum_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__vacuum_100.snap index c9f50986d..f1d97e001 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__vacuum_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__vacuum_100.snap @@ -87,16 +87,16 @@ cluster vaccluster; create function do_analyze() returns void -volatile language sql +volatile as $function$ ANALYZE pg_am $function$; create function wrap_do_analyze(c int) returns int -immutable language sql +immutable as $function$ SELECT $1 FROM public.do_analyze() $function$; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__vacuum_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__vacuum_80.snap index efd9e8b31..f4ff2eea8 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__vacuum_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__vacuum_80.snap @@ -87,16 +87,16 @@ cluster vaccluster; create function do_analyze() returns void -volatile language sql +volatile as $function$ ANALYZE pg_am $function$; create function wrap_do_analyze(c int) returns int -immutable language sql +immutable as $function$ SELECT $1 FROM public.do_analyze() $function$; diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__window_100.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__window_100.snap index 2a9400343..8cecd099e 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__window_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__window_100.snap @@ -4876,27 +4876,27 @@ from create function logging_sfunc_nonstrict(text, anyelement) returns text +language sql +immutable as $function$ SELECT COALESCE($1, '') || '*' || quote_nullable($2) -$function$ -language sql -immutable; +$function$; create function logging_msfunc_nonstrict(text, anyelement) returns text +language sql +immutable as $function$ SELECT COALESCE($1, '') || '+' || quote_nullable($2) -$function$ -language sql -immutable; +$function$; create function logging_minvfunc_nonstrict(text, anyelement) returns text +language sql +immutable as $function$ SELECT $1 || '-' || quote_nullable($2) -$function$ -language sql -immutable; +$function$; create aggregate logging_agg_nonstrict ( anyelement @@ -4922,30 +4922,30 @@ create aggregate logging_agg_nonstrict_initcond ( create function logging_sfunc_strict(text, anyelement) returns text -as $function$ -SELECT $1 || '*' || quote_nullable($2) -$function$ language sql +immutable strict -immutable; +as $function$ +SELECT $1 || '*' || quote_nullable($2) +$function$; create function logging_msfunc_strict(text, anyelement) returns text -as $function$ -SELECT $1 || '+' || quote_nullable($2) -$function$ language sql +immutable strict -immutable; +as $function$ +SELECT $1 || '+' || quote_nullable($2) +$function$; create function logging_minvfunc_strict(text, anyelement) returns text -as $function$ -SELECT $1 || '-' || quote_nullable($2) -$function$ language sql +immutable strict -immutable; +as $function$ +SELECT $1 || '-' || quote_nullable($2) +$function$; create aggregate logging_agg_strict ( text @@ -5132,11 +5132,11 @@ order by i; create function sum_int_randrestart_minvfunc(int, int) returns int +language sql +strict as $function$ SELECT CASE WHEN random() < 0.2 THEN NULL ELSE $1 - $2 END -$function$ -language sql -strict; +$function$; create aggregate sum_int_randomrestart ( int @@ -6309,13 +6309,13 @@ window create function pg_temp.f(group_size bigint) returns setof int[] +language sql +stable as $function$ SELECT array_agg(s) OVER w FROM generate_series(1,5) s WINDOW w AS (ORDER BY s ROWS BETWEEN CURRENT ROW AND GROUP_SIZE FOLLOWING) -$function$ -language sql -stable; +$function$; select * from pg_temp.f(2); diff --git a/crates/pgls_pretty_print/tests/snapshots/multi/tests__window_80.snap b/crates/pgls_pretty_print/tests/snapshots/multi/tests__window_80.snap index f3692f107..fb36f059d 100644 --- a/crates/pgls_pretty_print/tests/snapshots/multi/tests__window_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/multi/tests__window_80.snap @@ -5194,27 +5194,27 @@ from create function logging_sfunc_nonstrict(text, anyelement) returns text +language sql +immutable as $function$ SELECT COALESCE($1, '') || '*' || quote_nullable($2) -$function$ -language sql -immutable; +$function$; create function logging_msfunc_nonstrict(text, anyelement) returns text +language sql +immutable as $function$ SELECT COALESCE($1, '') || '+' || quote_nullable($2) -$function$ -language sql -immutable; +$function$; create function logging_minvfunc_nonstrict(text, anyelement) returns text +language sql +immutable as $function$ SELECT $1 || '-' || quote_nullable($2) -$function$ -language sql -immutable; +$function$; create aggregate logging_agg_nonstrict ( anyelement @@ -5240,30 +5240,30 @@ create aggregate logging_agg_nonstrict_initcond ( create function logging_sfunc_strict(text, anyelement) returns text -as $function$ -SELECT $1 || '*' || quote_nullable($2) -$function$ language sql +immutable strict -immutable; +as $function$ +SELECT $1 || '*' || quote_nullable($2) +$function$; create function logging_msfunc_strict(text, anyelement) returns text -as $function$ -SELECT $1 || '+' || quote_nullable($2) -$function$ language sql +immutable strict -immutable; +as $function$ +SELECT $1 || '+' || quote_nullable($2) +$function$; create function logging_minvfunc_strict(text, anyelement) returns text -as $function$ -SELECT $1 || '-' || quote_nullable($2) -$function$ language sql +immutable strict -immutable; +as $function$ +SELECT $1 || '-' || quote_nullable($2) +$function$; create aggregate logging_agg_strict ( text @@ -5485,11 +5485,11 @@ order by i; create function sum_int_randrestart_minvfunc(int, int) returns int +language sql +strict as $function$ SELECT CASE WHEN random() < 0.2 THEN NULL ELSE $1 - $2 END -$function$ -language sql -strict; +$function$; create aggregate sum_int_randomrestart ( int @@ -6718,13 +6718,13 @@ window create function pg_temp.f(group_size bigint) returns setof int[] +language sql +stable as $function$ SELECT array_agg(s) OVER w FROM generate_series(1,5) s WINDOW w AS (ORDER BY s ROWS BETWEEN CURRENT ROW AND GROUP_SIZE FOLLOWING) -$function$ -language sql -stable; +$function$; select * from pg_temp.f(2); diff --git a/crates/pgls_pretty_print/tests/snapshots/single/tests__create_function_stmt_0_100.snap b/crates/pgls_pretty_print/tests/snapshots/single/tests__create_function_stmt_0_100.snap index aac2be6f2..e470148e2 100644 --- a/crates/pgls_pretty_print/tests/snapshots/single/tests__create_function_stmt_0_100.snap +++ b/crates/pgls_pretty_print/tests/snapshots/single/tests__create_function_stmt_0_100.snap @@ -4,7 +4,7 @@ input_file: crates/pgls_pretty_print/tests/data/single/create_function_stmt_0.sq --- create function add(a int, b int) returns int +language sql as $function$ SELECT $1 + $2 -$function$ -language sql; +$function$; diff --git a/crates/pgls_pretty_print/tests/snapshots/single/tests__create_function_stmt_0_80.snap b/crates/pgls_pretty_print/tests/snapshots/single/tests__create_function_stmt_0_80.snap index aac2be6f2..e470148e2 100644 --- a/crates/pgls_pretty_print/tests/snapshots/single/tests__create_function_stmt_0_80.snap +++ b/crates/pgls_pretty_print/tests/snapshots/single/tests__create_function_stmt_0_80.snap @@ -4,7 +4,7 @@ input_file: crates/pgls_pretty_print/tests/data/single/create_function_stmt_0.sq --- create function add(a int, b int) returns int +language sql as $function$ SELECT $1 + $2 -$function$ -language sql; +$function$;